Django ModelForm验证失败,没有错误

oog*_*les 10 django validation modelform

好吧,我一直在盯着这几个小时试图弄清楚发生了什么,但没有用.我正在尝试使用'instance'关键字创建一个ModelForm,以将其传递给现有的模型实例,然后保存它.这是ModelForm(在我尝试确定此问题的原因时,从原始版本中剥离了很多):

class TempRuleFieldForm(ModelForm):
    class Meta:
        model = RuleField
Run Code Online (Sandbox Code Playgroud)

这是我正在运行的代码:

>>> m = RuleField.objects.get(pk=1)
>>> f = TempRuleFieldForm(instance=m)
>>> f.is_valid()
False
Run Code Online (Sandbox Code Playgroud)

模型对象(m上面)是有效的,它保存得很好,但表单不会验证.现在,据我所知,这段代码与这里的Django文档示例完全相同:http://docs.djangoproject.com/en/dev/topics/forms/modelforms/#the-save-method,尽管很明显我错过了什么.我非常感谢一些新鲜的眼睛告诉我我的错误.

谢谢

Dan*_*man 21

请注意,您的链接不会调用f.is_valid(),只是直接保存.这可能有点误导.

问题的关键是,用实例只是一个形式instance参数,但没有data没有将其绑定到数据,因此该形式是无效的.你会看到这f.is_bound是假的.

在幕后,instance实际上与传递initial数据完全相同,因为文档说明仅用于最初显示数据而不用于保存.您可能会从阅读绑定和未绑定表单上注释中受益.

  • +1."实例并不意味着束缚":这是正确的推理. (3认同)