我有一个带有动态添加字段的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
可以通过添加注释掉的声明来修复。
我在文档中找不到任何可能导致这种情况的向后兼容的变化。有谁知道这里发生了什么?