Проводка количества товара в форме Django - PullRequest
0 голосов
/ 01 мая 2020

Я работаю с веб-приложением для электронной коммерции, и в подробном представлении о товаре я хочу указать количество до покупки. Я думал, что мог бы сделать это с помощью простой формы:

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>

И я не могу получить доступ к данным, которые я публикую в другом представлении. Я считаю плохой практикой публиковать подобные данные в другом представлении, но я не мог придумать ничего, кроме этого. Есть ли другой способ передать эти данные в другое представление?

Примечание. Я не использую систему корзины, поскольку имею дело только с двумя продуктами.

...