self.instance in Django ModelForm

前端 未结 2 755
臣服心动
臣服心动 2021-02-02 10:50

What does self.instance in Django ModelForm constructor mean and where can I find a documentation about it?

class MyModelForm(ModelForm):
    def __init__(self,          


        
相关标签:
2条回答
  • 2021-02-02 11:05

    In a ModelForm, self.instance is derived from the model attribute specified in the Meta class. Your self in this context is obviously an instance of your subclass of ModelForm, and self.instance is (and will be on saving the form without errors) an instance of the model class you specified, although you have not done so in your example.

    Accessing self.instance in __init__ may not work, though doing so after calling the parent's __init__ probably will. Further, I wouldn't recommend trying to change the instance directly. If you are interested, have a look at the BaseModelForm code on Github. The instance can also be specified when creating a new form via the instance argument.

    0 讨论(0)
  • 2021-02-02 11:11

    You can find the documentation on django's website.

    https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#overriding-the-clean-method

    Just search the page for every reference to "instance", and you should find what you need.

    # 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
    
    0 讨论(0)
提交回复
热议问题