Элемент не удаляется, если 0
товар не удаляется, когда его количество равно 0, и он продолжает получать отрицательные числа. Что я сделал не так, как я могу решить эту проблему.
def post(self, request, pk):
if 'minus' in request.POST:
cart = Cart.objects.get(order_user=self.request.user)
item = OrderItem.objects.get(id=pk, cart=cart)
item.quantity=F('quantity')-1
if item.quantity == 0:
item.delete()
else:
item.save()
print(item.quantity)
Если задать item.quantity = F('quantity')-1
, то это не равно 0
: это выражение F('quantity')-1
.
Вы можете проверить, если элемент меньше или равен 1
и удалить его, в противном случае вы можете уменьшить его. Например, с:
def post(self, request, pk):
if 'minus' in request.POST:
cart = Cart.objects.get(order_user=self.request.user)
qs = OrderItem.objects.filter(id=pk, cart=cart, quantity__lte=1)
if not qs.delete()[0]:
OrderItem.objects.filter(
id=pk, cart=cart
).update(quantity=F('quantity')-1)
# …
# …