Django ModelForm构造函数中的self.instance是什么意思,我在哪里可以找到有关它的文档?
class MyModelForm(ModelForm):
def __init__(self, *args, **kwargs):
super(MyModelForm, self).__init__(*args, **kwargs)
if self.instance:
...
答案 0 :(得分:13)
在ModelForm中,self.instance派生自Meta类中指定的model
属性。你在这个上下文中的self
显然是ModelForm子类的一个实例,而self.instance是(并且将保存表单而没有错误)你指定的模型类的一个实例,尽管你还没有这样做在你的例子中。
在__init__
中访问self.instance可能不起作用,但在调用父__init__
后可能会这样做。此外,我不建议尝试直接更改实例。如果您有兴趣,请查看Github上的BaseModelForm代码。通过instance
参数创建新表单时,也可以指定instance
。
答案 1 :(得分:9)
您可以在django的网站上找到该文档。
https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#overriding-the-clean-method
只需在页面中搜索“实例”的每个引用,您就应该找到所需的内容。
# Load up an instance
my_poll = Poll.objects.get(id=1)
# Declare a ModelForm with the instance
my_form = PollForm(request.POST, instance=my_poll)
# save() will return the model_form.instance attr which is the same as the model passed in
my_form.save() == my_poll == my_form.instance