为什么不能在Django 1.3中的__init __()中将字段添加到ModelForm中

时间:2011-09-20 08:06:57

标签: django django-forms django-1.3

我有一个带有动态添加字段的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']

在Django 1.2下运行时,不需要注释掉的'dummy'声明,一切都可以在init()中动态完成。在Django 1.3中,相同的代码会出错:

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

可以通过添加注释掉的声明来修复。

我在文档中找不到任何可能导致这种情况的向后兼容的变化。有谁知道这里发生了什么?

0 个答案:

没有答案