我有一个带有动态添加字段的 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 下运行时不需要注释掉的“虚拟”声明,一切都可以在 init() 中动态完成。在 Django 1.3 中,相同的代码给出了一个错误:
FieldError: Unknown field(s) (dummy) specified for MyModel
这可以通过添加注释掉的声明来解决。
我在文档中找不到任何暗示会导致这种情况的向后不兼容更改的内容。有人知道这里发生了什么吗?