Я работаю с веб-приложением для электронной коммерции, и в подробном представлении о товаре я хочу указать количество до покупки. Я думал, что мог бы сделать это с помощью простой формы:
class QuantityForm(forms.Form):
quantity = forms.IntegerField(widget=forms.NumberInput(attrs={'class':'required'}))
И затем реализовать ее в представлении:
class BagDetailView(DetailView):
context_object_name = 'ctx'
model = Bag
template_name = 'product_page.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['form'] = QuantityForm(initial={'quantity':1})
context['Jackson'] = Bag.objects.get(title = 'Jackson')
context['Anthony'] = Bag.objects.get(title = 'Anthony')
return context
Но проблема заключается в запросе POST. Я не могу вызвать функцию render()
, потому что у меня есть другое представление для обработки заказа, поэтому мне нужно вызвать redirect()
. Это код:
def post(self, *args, **kwargs):
form = QuantityForm()
b = Bag.objects.get(slug=kwargs['slug'])
if form.is_valid:
return redirect(b)# calls get_absolute_url which redirects to checkout/<slug>
И я не могу получить доступ к данным, которые я публикую в другом представлении. Я считаю плохой практикой публиковать подобные данные в другом представлении, но я не мог придумать ничего, кроме этого. Есть ли другой способ передать эти данные в другое представление?
Примечание. Я не использую систему корзины, поскольку имею дело только с двумя продуктами.