覆盖 Django Forms 的元数据 类
Override Django Forms's Meta Classes
ContactForm
是我的应用程序中被多次使用的常见形式。我已经在 Guardian
table.So 中有一个 Foreign Key
的 Contact
模型,解决方案中的 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 的方法,例如:
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`
或者 - 是否有更好的标准方法来解决这个问题?
我不确定你想要达到什么目的,但这里是你如何扩展 Django Forms Meta Class :
class GuardianForm(ContactForm):
class Meta(ContactForm.Meta):
fields = ("phone1", "phone2", "is_emergency")
ContactForm
是我的应用程序中被多次使用的常见形式。我已经在 Guardian
table.So 中有一个 Foreign Key
的 Contact
模型,解决方案中的 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 的方法,例如:
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`
或者 - 是否有更好的标准方法来解决这个问题?
我不确定你想要达到什么目的,但这里是你如何扩展 Django Forms Meta Class :
class GuardianForm(ContactForm):
class Meta(ContactForm.Meta):
fields = ("phone1", "phone2", "is_emergency")