Элемент не удаляется, если 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)
        # …
    # …
Вернуться на верх