如何从模型表单中添加自己的表单字段到实例?

时间:2013-02-07 12:14:52

标签: python django

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"/>

如果禁用此输入,我的is_ok = request.POST.get('is_ok') =无

1 个答案:

答案 0 :(得分:1)

你真的应该在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

表单类现在将处理input字段的is_ok元素的创建,就像它对所有其他字段一样,但它将覆盖模型上的设置 - 它赢了不再被禁用(有关详细信息,请参阅docs)。