Реализация формы. Django
пишу интернет магазин на Django. Реализовал добавление товара в корзину через форму:
from django import forms
PRODUCT_QUANTITY_CHOICES = [(i, str(i)) for i in range(1, 41)]
class CarttAddProductForm(forms.Form):
quantity = forms.TypedChoiceField(
choices=PRODUCT_QUANTITY_CHOICES,
coerce=int,
label='Количество',
empty_value=15
)
update = forms.BooleanField(required=False, initial=False, widget=forms.HiddenInput)
views.py:
@require_POST
def cartt_add_retail(request, slug):
cartt = Cartt(request)
product = get_object_or_404(Product, slug=slug)
form = CarttAddProductRetailForm(request.POST)
if form.is_valid():
cd = form.cleaned_data
cartt.add_retail(
product=product,
quantity=cd['quantity'],
update_quantity=cd['update']
)
return redirect('cartt_detail_retail')
и эта конструкция справляется со своей задачей на странице одного товара, но при попытке использовать ее же при выводе списка товаров, товар не добавляется в корзину.
single_product.html:
<div class="col-md-6">
<h1 class="display-5 fw-bolder">{{ product_retail.title }}</h1>
<div class="small mb-3">Категория: <a href="{% url 'products_retail_by_category' slug=product_retail.category.slug %}">{{ product_retail.category }}</a></div>
<div class="fs-5 mb-5">
<span>Цена: {{ product_retail.price_retail }} грн</span>
</div>
<div class="small mb-3">Вид товара: <a href="{{ product_retail.tag.get_absolute_url }}">{{ tag.title }}</a></div>
<p class="lead">{{ product_retail.description }}</p>
<form action="{% url 'cartt_add_retail' slug=product_retail.slug %}" method="post">
{{ cartt_product_form }}
{% csrf_token %}
<input class="btn btn-outline-dark flex-shrink-0"
type="submit"
value="Добавить в корзину">
</form>
</div>
products.html:
{% for item in products_retail %}
<div class="col mb-5">
{% if item.image %}
<a href="{% url 'product_retail' slug=item.slug %}"><img class="card-img-top" src="{{ item.image.url }}" width="300" height="300" alt="" /></a>
{% else %}
<img class="card-img-top" src="https://dummyimage.com/450x300/dee2e6/6c757d.jpg" width="300" height="300" alt="" />
{% endif %}
<div class="card-body p-4">
<div class="text-center">
<h5 class="fw-bolder"><a href="{% url 'product_retail' slug=item.slug %}">{{ item.title }}</a></h5>
<div class="d-flex justify-content-center small text-warning mb-2">
</div>
<span class="text-muted">{{ item.price_retail }} грн</span>
</div>
<div class="text-center">
{% if item.is_available %}
<span class="text-success">В наличии</span>
{% else %}
<span class="text-danger">Нет в наличии</span>
{% endif %}
</div>
</div>
<form action="{% url 'cartt_add_retail' slug=item.slug %}" method="post">
{{ cartt_product_form }}
{% csrf_token %}
<input class="btn btn-outline-dark flex-shrink-0"
type="submit"
value="Добавить в корзину">
</form>
</div>
</div>
{% endfor %}
Спасибо большое!