Django ModelForm中的self.instance

时间:2013-08-16 02:42:54

标签: python django

Django ModelForm构造函数中的self.instance是什么意思,我在哪里可以找到有关它的文档?

class MyModelForm(ModelForm):
    def __init__(self, *args, **kwargs):
        super(MyModelForm, self).__init__(*args, **kwargs)
        if self.instance:
        ...

2 个答案:

答案 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