2010-04-08 16 views
20

मैं फॉर्म init फ़ंक्शन में कोई फ़ील्ड कैसे जोड़ सकता हूं? जैसे नीचे दिए गए कोड में मैं एक प्रोफाइल फ़ील्ड जोड़ना चाहता हूं।django फॉर्म निर्माण init

class StaffForm(forms.ModelForm): 
    def __init__(self, user, *args, **kwargs): 
     if user.pk == 1: 
      self.fields['profile'] = forms.CharField(max_length=200) 

     super(StaffForm, self).__init__(*args, **kwargs) 

    class Meta: 
     model = Staff 

मैं मैं सिर्फ वर्ग StaffForm .... रेखा से नीचे जोड़ सकते हैं पता है, लेकिन मैं यह है कि क्या उपयोगकर्ता पारित हो जाता है में तो यह इस तरह से नहीं कर सकते पर निर्भर करता है गतिशील होना चाहता हूँ।

धन्यवाद

+3

* शायद इनमें से कुछ की नकल: * http://stackoverflow.com/search?q=django+dynamic+form, विशेष रूप से http://stackoverflow.com/questions/2390000/dynamic-django- फॉर्म-वेरिएबल-फ़ील्ड और http://stackoverflow.com/questions/2506136/storing-dynamic-fields-in-django-forms –

+0

डुप्लीकेट: https://stackoverflow.com/questions/22390416/setting-initial-django- फार्म क्षेत्र-मान-इन-द-init-विधि –

उत्तर

33

बस इतना है कि सुपर अब और फ़ील्ड जोड़ने से पहले कहा जाता है init समारोह दौर स्विच करना होगा।

class StaffForm(forms.ModelForm): 
    def __init__(self, user, *args, **kwargs): 
     super(StaffForm, self).__init__(*args, **kwargs) 

     if user.pk == 1: 
      self.fields['profile'] = forms.CharField(max_length=200) 
      self.fields['profile'].initial = 'whatever you want' 
    class Meta: 
     model = Staff 
संबंधित मुद्दे