カートリッジ/メザニンを使用してウェブショップを構築しています。デフォルトでは、チェックアウトフォーム(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
- :
名前/姓が必要な場合は、おそらくそれらの別々のフィールドを作成したいと考えています。スペース文字を分割するだけの場合は、送信された名前に複数のスペースがあるとどうなりますか? –