0

我正在使用 Cartridge/Mezzanine 建立一个网上商店。但是,默认情况下,结帐表单 (cartridge.shop.forms.OrderForm) 包含名字和姓氏的字段。我想要一个客户只需提供姓名的表格。此外,我不想使用国家和州/地区的字段。

到目前为止,我已经创建了一个子类 OrderForm 的 CustomOrderForm 并添加了一个“名称”字段。我还尝试使用以下方法覆盖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')

除了“名称”字段显示在模板中之外,这对我没有任何好处。但我仍然需要从该字段中获取输入,将其拆分为名字和姓氏,并用它填充相关字段。

我该怎么做呢?

4

1 回答 1

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 方法。希望这是有用的,因为您在这么长时间后才得到答复。

于 2016-11-28T10:36:17.130 回答