2011-02-08 131 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