2010-04-08 67 views
20

如何添加表單init函數中的字段?例如在下面的代碼中,我想添加一個配置文件字段。初始化django表單創建

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- forms-variable-fields和http://stackoverflow.com/questions/2506136/storing-dynamic-fields-in-django-forms – 2010-04-08 12:51:13

+0

重複:https://stackoverflow.com/questions/22390416/setting-initial-django-表單字段值-內式初始化方法 – 2017-07-31 19:59:47

回答

33

只需要切換初始化函數一輪,這樣的超是增加了前場叫。

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