【发布时间】:2021-10-26 04:35:37
【问题描述】:
EnquiryForm 是一个有很多字段的模型表单,我无法使用继承来继承父表单的字段。
class EnquiryForm(models.ModelForm):
...
possession = forms.ChoiceField(
required=True,
choices=(('', '----Select----'),) +
models.Enquiry._meta.get_field('possession').choices,
widget=forms.Select(attrs={'class': 'form-control btn btn-primary'})
)
...
# It has several other fields and clean method to manipulate user inputs and form validation
class EditForm(EnquiryForm):
possession_month = forms.ChoiceField(
label='Possession Month',
required=True,
choices=MONTHS.choices,
widget=forms.Select(attrs={'class': 'form-control btn btn-primary', 'required':True})
)
possession_year = forms.ChoiceField(
choices=possession_year_choices(
datetime.now().year + 10, datetime.now().year),
label='Possession Year',
required=True,
widget=forms.Select(attrs={'class': 'form-control btn btn-primary', 'required':True})
)
class Meta(EnquiryForm.Meta):
model = models.Enquiry
fields = EnquiryForm.Meta.fields + ('possession_month', 'possession_year', )
注意这里(最后一行),我直接访问EnquiryForm.Meta.fields。但我尝试通过继承 super().fields 的 Meta 类来访问它,但没有运气。
我们能否通过Meta继承fields,比如super(EnquiryForm.Meta).fields。
附: - 另外,我必须在 EditForm 中从 parent Meta.fields 中删除字段 possession。
【问题讨论】:
标签: django forms inheritance