无法在__init__中向ModelForm添加字段
我在使用 ModelForm
的时候遇到了一个问题。字段 test1
显示出来了,但 test2
却没有。尝试调整 base_fields
也没有解决这个问题。
# 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)
谢谢。
2 个回答
2
在Django 1.4中,我不能用 self.Meta.fields.append,因为这里的 fields 是一个元组(tuple)。你需要用 self.Meta.fields += ('another_field',) 这种方式来添加字段,比如这样。
14
解决了!
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',]
...