Пункт не уменьшается Django
Здравствуйте, я хочу сделать функцию, чтобы при нажатии на кнопку количество уменьшалось на 1, но оно не уменьшается, а только возвращается HttpResponse.
class CartView(TemplateView):
template_name = "shop/cart.html"
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['cart'] = Cart.objects.annotate(
price=Sum(F('orderitem__item__price') * F('orderitem__quantity'))
).get(order_user= self.request.user)
cart = context['cart']
cart.total = cart.price
cart.save()
context['order_items'] = OrderItem.objects.filter(cart=cart)
return context
def post(self, request):
if 'minus' in request.POST:
cart = Cart.objects.get(order_user=self.request.user)
primary = request.POST.get('orderitem__id')
item = OrderItem.objects.filter(id=primary, cart=cart)
item.quantity = F('quantity') - 1
item.update()
return HttpResponse("cart uptaded")
Item является QuerySet
, вы не обновляете кверисет, изменяя атрибут: для этого вы используете параметры в методе .update(…)
[Django-doc]:
OrderItem.objects.filter(id=primary, cart=cart).update(
quantity=F('quantity')-1
)