Настроить картридж OrderForm
Я строю интернет-магазин, используя Картридж / Мезонин. Однако по умолчанию форма оформления заказа (картридж.shop.forms.OrderForm) содержит поля для имен и фамилий. Я хочу форму, где клиент просто должен предоставить имя. Кроме того, я не хочу использовать поля для страны и штата / региона.
До сих пор я создал CustomOrderForm, который подклассов OrderForm и добавил поле 'name'. Я также попытался переопределить метод 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')
Это на самом деле не приносит мне никакой пользы, за исключением того, что поле 'name' отображается в шаблоне. Но мне все еще нужно взять входные данные из этого поля, разделить его на имя и фамилию и заполнить соответствующие поля им.
Как мне это сделать?
1 ответ
Вот как я удалил поля Страна и Штат / Регионы из моей формы заказа:-
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. Надеюсь, что это полезно, так как вам отвечают после столь долгого времени.