【发布时间】:2020-12-06 04:11:45
【问题描述】:
ContactForm 是我的应用程序中多次使用的常见形式。我已经在Guardian 表中有Contact 的Foreign Key 模型。所以解决方案中的accepted answer 对我有用。
但是当我必须重用时,为 ContactForm 以下字段再次编写整个表单有点复杂。因此将ContactForm 分开以使其可重复使用。
但有时ContactForm 中的可选字段仍然很少,因此无法再次重复使用相同的ContactForm。
class ContactForm(forms.ModelForm):
class Meta:
model = Contact
fields = ("address", "city", "district", "state", "country",
"pincode", "phone1", "phone2", "is_emergency")
例如。从上面的ContactForm,我只想在GuardianForm 中使用phone1、phone2 和is_emergency 标志。
有没有办法通过将ContactForm 继承到GuardianForm 来覆盖Meta 类,例如:
class GuardianForm(forms.ModelForm, ContactForm): #obviously this will not work
first_name = forms.CharField(max_length=30, required=False, label = "First Name")
last_name = forms.CharField(max_length=30, required=False, label = "Last Name")
# Other Fields ...
class Meta:
model = Guardian
fields = ('passport_number', 'pan_number', 'annual_income',
'phone1', 'phone2', 'is_emergency',) # Only 3 Fields of `ContactForm`
或者 - 有没有更好的标准方法来解决这个问题?
【问题讨论】:
-
我看不懂评论,".. 只有 3 个 `ContactForm" 字段 你能解释一下这是什么意思吗?
-
@ArakkalAbu - 我只需要使用从
ContactForm到GuardianForm的这三个字段(phone1、phone2和is_emergency)。 -
@RiyasAc - 这对我来说更有意义。感谢您的回答
标签: python python-3.x django metaclass django-3.0