如何从模型表单向实例添加自己的表单域?

2024-03-29 01:45:47 发布

您现在位置:Python中文网/ 问答频道 /正文

if request.method == 'POST':
    try:
        form = ExampleForm(request.POST,
                               instance=Example.objects.get(user=request.user))
    except:
        form = ExampleForm(request.POST)
    if form.is_valid():
        m = form.save(commit=False)
        is_ok = request.POST.get('is_ok')
        m.is_ok = is_ok
        m.user = request.user
        m.save()

如何将字段is_ok添加到instance=Example.objects.get(user=request.user)

注意:我不能将此字段添加到模型表单。你知道吗

如果我更改现有数据,我的is_ok值将更改为默认值

编辑:

<input type="checkbox" disabled="disabled" checked="checked" name="is_ok" id="id_is_ok"/>

如果禁用此输入,则myis_ok = request.POST.get('is_ok')=None


Tags: instanceformgetifobjectsisexamplerequest
1条回答
网友
1楼 · 发布于 2024-03-29 01:45:47

您确实应该在ExampleForm类的声明中这样做。我猜这个班看起来像这样

from your_app.models import ExampleModel
from django.forms import ModelForm

class ExampleForm(ModelForm):
    class Meta:
        model = ExampleModel

您只需要在表单上声明字段。类似于-

class ExampleForm(ModelForm)
    is_ok = forms.BooleanField()
    class Meta:
        model = ExampleModel

表单类现在将为is_ok字段处理input元素的创建,就像它为所有其他字段所做的那样,但是它将覆盖模型上的设置—它将不再被禁用(有关详细信息,请参见docs)。你知道吗

相关问题 更多 >