Почему нельзя добавить поле в ModelForm в __init __ () в Django 1.3 - PullRequest
2 голосов
/ 20 сентября 2011

У меня есть ModelForm с динамически добавленным полем.Он перестал работать, когда я переключился с Django 1.2 на Django 1.3.Следующий код является минимальной версией, воссоздающей проблему.

class MyModel(models.Model):
    rank = models.IntegerField()

    def __unicode__(self):
        return "{}".format(self.rank)


class MyModelAdminForm(forms.ModelForm):
    #dummy = forms.NullBooleanField()

    def __init__(self, *args, **kwargs):
        super(MyModelAdminForm, self).__init__(*args, **kwargs)
        self.fields['dummy'] = forms.BooleanField()
        self.fields['dummy'].required = False
        self.Meta.fields.append('dummy')

    class Meta:
        fields = ['rank']

Закомментированное объявление 'dummy' не требуется при работе под Django 1.2, все можно сделать динамически в init ().В Django 1.3 тот же код выдает ошибку:

FieldError: Unknown field(s) (dummy) specified for MyModel

, которую можно исправить, добавив закомментированное объявление.

Я не смог найти ничего в документах, предлагающих задом напереднесовместимое изменение, которое вызвало бы это.Кто-нибудь знает, что здесь происходит?

...