首页 文章

无法在__init__处向ModelForm添加字段

提问于
浏览
3

我有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 回答

  • 1

    解决了!

    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',]
    

    ...

  • 7

    我无法在Django 1.4中使用 self.Meta.fields.append ,因为 fields 是一个元组 . 例如,您必须与 self.Meta.fields += ('another_field',) 连接 .

相关问题