使用有效实例设置后,django表格无效

时间:2012-12-27 22:38:22

标签: django django-forms

我真的很困惑为什么这个form.is_valid()返回False:

这是我创建的django模型:

class aModel(models.Model):
    some_id = models.IntegerField()

我将Model转换为ModelForm,并使用ModelForm的实例创建Model个实例。这个ModelForm实例不应该有效吗?

>>> class aModelForm(forms.ModelForm):
...     class Meta:
...             model = aModel
... 
>>> am = aModel.objects.get(id=1)
>>> for k,v in am.__dict__.items(): print k,v
... 
_state <django.db.models.base.ModelState object at 0x1020c8a50>
id 1
some_id 5
>>> form = aModelForm(instance=am)
>>> form.is_valid()
False
>>> am.save()
>>> am.some_id = 6
>>> am.save()
>>> 

为什么表格无效?我需要做些什么才能使表格有效?

1 个答案:

答案 0 :(得分:1)

看起来这个表单没有绑定到数据,因此无法验证。您可以在form.is_bound()之前打印form.is_valid()进行验证。

如果没有约束,我认为你不能验证。要绑定数据,您需要将数据添加为表单的第一个参数的字典。

form = aModelForm({'some_id': am.some_id}, instance=am)
form.is_valid()

有关详细信息,请参阅Django - Forms API