Я работаю над макетом сайта электронной коммерции, используя Django и Wagtail CMS.У меня проблемы с удалением товаров из приложения в корзину.
Я использую метод POST, который обновляет корзину на основе идентификатора продукта.Работает как тумблер, если объект в корзине: удалить, иначе: добавить.Он отлично работает на странице продукта, но когда я пытаюсь удалить на странице корзины, я получаю ValueError в / cart / update / invalid literal для int () с базой 10: '' Кажется, что идентификатор продукта не передается?
Это HTML-код кнопки, которая вызывает метод POST
<form method='POST' action='{% url "cart:update" %}' class="form"> {% csrf_token %}
<input type="hidden" name="product_id" value="{{ self.id }}" />
{% if incart %}
<button type="submit" class="btn btn-danger btn-md my-0 p btn-sm" type="submit">
Remove
</button>
{% else %}
<button type="submit" class="btn btn-primary btn-md my-0 p" type="submit">Add
to cart
<i class="fa fa-shopping-cart"></i>
</button>
{% endif %}
</form>
переменная
{{ self.id }}
происходит из модели страницы продукта.использование модели страницы трясогузки.
модель страницы
class ProductDetailPage(Page):
def get_url(self):
return self.url
productImage = models.ForeignKey(
"wagtailimages.Image",
blank = False,
null = True,
on_delete = models.SET_NULL
)
productPrice = models.FloatField(
null = False,
blank = False,
default = 0
)
content_panels = Page.content_panels + [
ImageChooserPanel("productImage"),
FieldPanel("productPrice")
]
А это мой вид корзины
def cart_update(request):
product_id = request.POST.get('product_id')
if product_id is not None:
product_obj = Product.objects.get(id=product_id)
cart_obj, new_obj = Cart.objects.new_or_get(request)
if product_obj in cart_obj.products.all():
cart_obj.products.remove(product_obj)
else:
cart_obj.products.add(product_obj)
return redirect("cart:home")