我正在使用Cartridge / Mezzanine建立一个网上商店。默认情况下,结帐表单(cartridge.shop.forms.OrderForm)包含名字和姓氏的字段。我想要一个客户必须提供名称的表单。此外,我不想使用国家和州/地区的字段。
到目前为止,我已经创建了一个CustomOrderForm,它继承了OrderForm并添加了一个名称' -field。我还尝试使用以下方法覆盖 init 方法:
class CustomOrderForm(OrderForm):
name = forms.CharField(label=("Navn"))
def __init__(self, *args, **kwargs):
super(OrderForm, self).__init__(*args, **kwargs)
self.fields.pop('billing_detail_country')
除了名称' -field显示在模板中之外,这对我没什么好处。但我仍然需要从该字段中获取输入,将其拆分为名字和姓氏,并用它填充相关字段。
我该怎么做?
答案 0 :(得分:0)
这是我从订单表格中删除国家/地区/州/地区字段的方式: -
class CustomOrderForm(OrderForm):
class Meta:
model = Order
fields = ([f.name for f in Order._meta.fields if
f.name.startswith("billing_detail") or
f.name.startswith("shipping_detail")
]
+
["additional_instructions", "discount_code"])
def __init__(
self, request, step, data=None, initial=None, errors=None,
**kwargs):
res = super(CustomOrderForm, self).__init__(request, step, data, initial, errors, **kwargs)
del self.fields["billing_detail_country"]
del self.fields["shipping_detail_country"]
return res
因为它是字典我使用了del方法。希望所以这很有用,因为你经过这么长时间的回答。