2013-08-16 5 views
12

Django ModelForm कंस्ट्रक्टर में self.instance का अर्थ क्या है और मुझे इसके बारे में एक दस्तावेज़ कहां मिल सकता है?Django ModelForm में self.instance

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

यह एक सामान्य पायथन चीज़ नहीं है। यह कुछ ऐसा है जो विशेष रूप से 'मॉडलफॉर्म' द्वारा सुपरक्लास '__init__' में परिभाषित किया गया है। –

+0

धन्यवाद, मैंने प्रश्न शीर्षक में संशोधन किया है। – jazzblue

उत्तर

9

एक ModelForm में, self.instance model विशेषता मेटा कक्षा में निर्दिष्ट से ली गई है। इस संदर्भ में आपका self स्पष्ट रूप से मॉडलफॉर्म के आपके उप-वर्ग का एक उदाहरण है, और self.instance आपके द्वारा निर्दिष्ट मॉडल क्लास का एक उदाहरण है (और त्रुटियों के बिना फ़ॉर्म को सहेजने पर होगा), हालांकि आपने अपने उदाहरण में ऐसा नहीं किया है।

__init__ में self.instance तक पहुंचने से काम नहीं हो सकता है, हालांकि माता-पिता के __init__ को कॉल करने के बाद ऐसा करना संभवतः होगा। इसके अलावा, मैं सीधे घटना को बदलने की कोशिश करने की सिफारिश नहीं करता। यदि आप रुचि रखते हैं, तो Github पर बेसमोडेलफॉर्म कोड देखें। instance तर्क के माध्यम से एक नया फॉर्म बनाते समय instance भी निर्दिष्ट किया जा सकता है।

7

आप 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 
संबंधित मुद्दे