1

我真的很困惑为什么这个 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()
>>> 

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

4

1 回答 1

2

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

如果未绑定,我认为您无法验证。要绑定数据,您需要将数据作为字典添加到表单的第一个参数。

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

有关更多详细信息,请参阅Django - 表单 API

于 2012-12-28T01:06:27.747 回答