首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >定制Cartridge OrderForm

定制Cartridge OrderForm
EN

Stack Overflow用户
提问于 2016-04-12 15:47:26
回答 1查看 139关注 0票数 0

我正在用Cartridge/夹层建立一个网络商店。但是,默认情况下,签出表单(cartridge.shop.forms.OrderForm)包含姓名和姓氏的字段。我想要一张表格,客户只需提供一个名字。此外,我不想将这些字段用于国家和州/地区。

到目前为止,我已经创建了一个CustomOrderForm,它对OrderForm进行子类,并添加了一个‘name’-字段。我还试图使用以下方法覆盖init方法:

代码语言:javascript
复制
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')

这实际上对我没有任何好处,除了‘name’-字段显示在模板中。但是我仍然需要从这个字段中获取输入,将其分割为名字和姓氏,然后用它填充相关的字段。

我该怎么做?

EN

回答 1

Stack Overflow用户

发布于 2016-11-28 10:36:17

以下是我如何将字段国家和州/地区从我的订单中删除:-

代码语言:javascript
复制
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方法。希望如此,这是有用的,因为你是被回答了这么长时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36578191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档