1

我认为开始使用模型表单而不是常规表单会更容易(放弃模型表单提供的所有简单的东西)。但是当我尝试这样做时:

>>> m = Model.objects.get(pk=1)
>>> f = ModelForm(instance=m)
>>> f.is_valid()
False
>>> f.save()
AttributeError: 'ModelForm' objects has no attribute 'cleaned_data'

我认为 django文档是错误的说:

ModelForm 生成的每个表单也都有一个 save() 方法。此方法从绑定到表单的数据中创建并保存一个数据库对象。ModelForm 的子类可以接受现有模型实例作为关键字参数实例;如果提供了这个, save() 将更新该实例。如果未提供, save() 将创建指定模型的新实例

因为这对我不起作用。

我认为 django 文档是错误的吗?

提前致谢。

4

1 回答 1

5

您可能忘记根据用户的 request.POST 数据将“数据”添加到 ModelForm 实例化中。

f = ModelForm(data=request.POST, instance=m)
f.is_valid()  # is True if the data is ok.

无论如何,最好发布您的相关代码:模型类,模型表单类和您的视图。

编辑:如果你想工作,你必须在初始化中添加一个data=参数(或第一个参数,如果你不命名它) 。在这里根据各种验证规则检查给定的数据,只有在没问题的情况下,才允许您保存. 使用命名参数初始化 a just不会触发任何验证,因为没有什么新东西要验证。ModelFormis_valid()is_validModelFormModelForminstance=

于 2013-05-12T06:52:15.660 回答