我认为使用模型表单而不是常规表单(放弃modelform提供的所有简单事情)会更容易。 但是当我尝试这样做:在Django中处理模型表单
>>> 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的documentation是错的说:
通过的ModelForm生产的每个表单也有一个save()方法。这个 方法创建并保存数据库对象的数据绑定到 表单。 ModelForm的子类可以接受现有的 实例作为关键字参数实例;如果提供了,则save() 将更新该实例。如果没有提供,save()会创建一个 指定模型的新实例
原因这只是对我而言不起作用。
我说django文档错了吗?
在此先感谢。
你知道,在这种情况下,使用ModelForm(无论,instance = m)还是ModelForm(data = whatever,instance = m)的结果是相同的。不过,我不能只更新一个字段,它说每个字段都是必需的,因此使is_valid返回False。但这一定与我的模型有关。 – 2013-05-12 18:29:50
是的,我知道。您的代码段只包含ModelForm初始化的“instance =”参数。另外:请在你的问题中包含更多相关的代码。而且:在你提到的这一段中,Django文档绝对没有错。 – mawimawi 2013-05-12 18:38:12