Попытка удалить товар из корзины

Пытаюсь создать приложение корзины и в настоящее время застрял, пытаясь удалить один товар из корзины. Я не могу понять, как удалить один товар, поскольку в настоящее время он удаляет все ID товара с помощью функции remove.

Это файл models.py:

from django.db import models
from django.urls import reverse
from e_boutique.settings import AUTH_USER_MODEL

class Product(models.Model):
    name = models.CharField(max_length=128)
    slug = models.CharField(max_length=128)
    price = models.FloatField(default=0.0)
    stock = models.IntegerField(default=0)
    description = models.TextField()
    thumbnail = models.ImageField(upload_to="products", blank=True, null=True)

    def __str__(self):
        return self.name
    
    def get_absolute_url(self):
        return reverse('product', kwargs={"slug":self.slug})


class Order(models.Model):
    user = models.ForeignKey(AUTH_USER_MODEL, on_delete=models.CASCADE)
    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    quantity = models.IntegerField(default=1)
    ordered = models.BooleanField(default=False)

    def __str__(self):
        return f"{self.product.name} ({self.quantity})"

class Cart(models.Model):
    user = models.OneToOneField(AUTH_USER_MODEL, on_delete=models.CASCADE)
    orders = models.ManyToManyField(Order)
    ordered = models.BooleanField(default=False)
    ordered_date = models.DateTimeField(blank=True, null=True)

    def __str__(self):
        return self.user.username



и вот мой файл views.py:


from django.shortcuts import get_object_or_404, redirect, render
from django.urls import reverse
from store.models import Cart, Order, Product


def index(request):
    products = Product.objects.all()

    return render(request, 'store/index.html', context={'products': products})

def product_details(request, slug):
    product = get_object_or_404(Product, slug=slug)
    
    return render(request, 'store/product_details.html', context={'product': product})
     

def add_to_cart(request, slug):
    user = request.user
    product = get_object_or_404(Product, slug=slug)
    cart, _ = Cart.objects.get_or_create(user=user)
    order, created = Order.objects.get_or_create(user=user, product=product)

    if created:
        cart.orders.add(order)
        cart.save()
    else:
        order.quantity += 1
        order.save()
    
    return redirect(reverse("product", kwargs={"slug":slug}))

def cart(request):
    cart = get_object_or_404(Cart, user=request.user)

    return render(request, 'store/cart.html', context={"orders":cart.orders.all()})


def delete_to_cart(resquest, slug):  
    # remove an item from cart  
    
    user =resquest.user
    cart = Cart.objects.get_or_create(user=user)
    product = get_object_or_404(Product, slug=slug)
    order = Order.objects.get_or_create(user=user, product=product)

    if product in cart:
        # Subtract 1 from the quantity
        order -= 1
        # If the quantity is now 0, then delete the item
    if order == 0:
        del cart.product
    cart.save()
    
    return redirect(reverse('cart'))

спасибо за помощь

Вернуться на верх