为什么以下内容没有给出包含3个字段的最终模型表单?
这两个额外的字段不可用。如果我将它们直接移动到模型表单中,它可以工作,但我想以单独的形式声明这些字段,因为我计划以多种形式重用它们。 有没有办法做到这一点?
class FormA(forms.Form):
extra_field_1 = forms.CharField(required=False)
extra_field_2 = forms.CharField(required=False)
class ModelFormA(FormA, forms.ModelForm):
class Meta:
model = ModelA
fields = ['email']
由于 麦克
答案 0 :(得分:2)
由于Django使用元类的方式,使用这种方法实现这一点比你想象的要复杂得多。 (更多细节in this answer。)
我尝试重写构造函数 - (并注意mixin现在从对象扩展):
class MyFormMixin(object):
def __init__(self, *args, **kwargs):
super(MyFormMixin, self).__init__(*args, **kwargs)
self.fields['extra_field_1'] = forms.CharField(required=False)
self.fields['extra_field_2'] = forms.CharField(required=False)
class ModelFormA(MyFormMixin, forms.ModelForm):
...