Python 将ModelForm绑定到Model';保存时的实例

Python 将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

假设我有一个模型文章和它的模型形式ArticleForm

>>> 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
方法()。