2016-04-12 7 views
0

カートリッジ/メザニンを使用してウェブショップを構築しています。デフォルトでは、チェックアウトフォーム(cartridge.shop.forms.OrderForm)には、名字と姓の両方のフィールドが含まれています。顧客が名前を付けるだけのフォームが必要です。さらに、私は国と州/地域のフィールドを使いたくありません。カートリッジをカスタマイズするOrderForm

これまで、OrderFormをサブクラス化して 'name'-fieldを追加したCustomOrderFormを作成しました。テンプレートに表示されている「name'フィールド以外

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') 

これは本当に私が何か良い行いません。また、私はこれを使用してのinitメソッドをオーバーライドしようとしました。しかし、私はまだこのフィールドからの入力を取って、それを姓と名に分割し、それに関連するフィールドを入力する必要があります。

どうすればよいですか?それは私がデルの方法を使用した辞書ですので

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 

- :

+0

名前/姓が必要な場合は、おそらくそれらの別々のフィールドを作成したいと考えています。スペース文字を分割するだけの場合は、送信された名前に複数のスペースがあるとどうなりますか? –

答えて

0

これは私が私の注文フォームからフィールドに国と国/地域を削除する方法です。あなたがこのような長い時間の後に答えられているので、これは役に立ちます。

関連する問題