Невозможно добавить поле в ModelForm в __init__ - PullRequest
3 голосов
/ 09 февраля 2011

У меня проблема с 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 ]

9 голосов
/ 09 февраля 2011

Решено!

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

...

1 голос
/ 20 ноября 2012

Я не смог использовать self.Meta.fields.append в Django 1.4, потому что рассматриваемые поля - это кортеж.Вместо этого вы должны объединить, например, self.Meta.fields + = ('another_field',) .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...