2011-02-08 122 views
2

我有ModelForm的問題。顯示字段「test1」,但「test2」 - 不是。玩base_fields沒有幫助。無法在__init__添加字段到ModelForm

 
# models.py 
class Country(models.Model): 
    name = CharField(max_length=100) 

# admin.py 
class CountryAdminForm(ModelForm): 
    test1 = forms.CharField('test1') 

    def __init__(self, *args, **kwargs): 
     super(CountryAdminForm, self).__init__(*args, **kwargs) 
     self.fields['test2'] = forms.CharField('test2') 

    class Meta: 
     model = Country 

class CountryAdmin(admin.ModelAdmin): 
    form = CountryAdminForm 

admin.site.register(Country, CountryAdmin) 

謝謝。

回答

5

解決!

 
class CountryAdminForm(ModelForm): 
    test1 = forms.CharField('test1') 

    def __init__(self, *args, **kwargs): 
     super(CountryAdminForm, self).__init__(*args, **kwargs) 
     self.fields['test2'] = forms.CharField('test2') 
     self.Meta.fields.append('test2') 

    class Meta: 
     model = Country 
     fields = ['name', 'test1',] 

...

+0

他們都應該測試1,而不是其中一些測試2? – Dan 2015-10-09 20:28:24

0

我不能在Django 1.4使用self.Meta.fields.append,因爲領域問題是一個元組。例如,您必須與self.Meta.fields + =('another_field',)連接。

+0

我有同樣的問題,但該解決方案不適用於Django 1.5。請問你能幫幫我嗎 ? – 2013-03-17 13:21:35