Python 将ModelForm绑定到Model';保存时的实例
假设我有一个模型文章和它的模型形式ArticleFormPython 将ModelForm绑定到Model';保存时的实例,python,django,django-models,django-forms,Python,Django,Django Models,Django Forms,假设我有一个模型文章和它的模型形式ArticleForm >>> a_form = ArticleForm({"headline" : "My headline"}) >>> b = Article() >>> b.save() 现在我想将一个表单绑定到b实例并保存它(即用表单字段更新b对象)。有办法吗 比如: >>> a_form.assign_instance(b) # WOULD LIKE TO HAVE SOMET
>>> a_form = ArticleForm({"headline" : "My headline"})
>>> b = Article()
>>> b.save()
现在我想将一个表单绑定到b实例并保存它(即用表单字段更新b对象)。有办法吗
比如:
>>> a_form.assign_instance(b) # WOULD LIKE TO HAVE SOMETHING LIKE THAT
>>> a_form.save()
注:我知道我可以打电话
>>> a_form = ArticleForm({"headline" : "My headline"}, instance=b)
>>> a_form.save()
。。。但这并不是我们的意图。我需要知道,在保存实例之前,是否可以将其潜入模型表单。谢谢。您可以这样做:
a_form.instance = b
a_form.save()
class ArticleForm(forms.ModelForm):
...
def save(self):
instance = self.instance # Do with instance what every you want
super(ArticleForm, self).save()
但是在表单保存之前修改实例的Django方法是重写表单save()
方法。您可以这样做:
a_form.instance = b
a_form.save()
class ArticleForm(forms.ModelForm):
...
def save(self):
instance = self.instance # Do with instance what every you want
super(ArticleForm, self).save()
不只是使用
instance=b
的原因是什么?因为正如你所说,这就是我们应该做的。谢谢!我可以对内联表单集做同样的操作吗:a_formset.instance=b?@GregoryR是的,你可以。谢谢。有没有一种方法可以对内联表单集执行此操作?ArticleFormSet=inlineformset\u工厂(报告者,文章,表格=AticleForm,额外=extra\u表格\u文章)。我在你的答案后面加了一个问题,但看起来是的deleted@GregoryR当然,您可以覆盖内联表单集的save
方法()。