Как обновить количество товаров в проекте django ecommerce

Я пытаюсь обновить количество товара в корзине, когда я нажимаю кнопку добавления в корзину. Я пытался понять логику этого, но не могу понять. Я полагаю, что в моем views.py я добавляю товар в корзину, но это не работает. Может ли кто-нибудь дать мне какое-то направление в этом вопросе?

main.Html

<button href="{% url 'add_cart'%}" class="btn btn-primary add-cart">Add to
            Cart</button>

urls.py

urlpatterns = [
    path('add_cart', views.add_cart, name='add_cart')
]

Views.py

def add_cart(request, slug):
product = get_object_or_404(Product, slug=slug)
item = Item.objects.create(product=product)
order = Order.objects.filter(user=request.user, ordered=False)
if order.exists():
    order = order[0]
    if order.items.filter(item_slug=item.slug).exists():
        item.quantity += 1
        item.save()
    else:
        order = Order.objects.create(user=request.user)
        order.items.add(item)
        return redirect('main')

models.py

class Product(models.Model):
    img = models.CharField(max_length=30)
    product_name = models.CharField(max_length=250, null=True)
    price = models.CharField(max_length=250, null=True)
    description = models.TextField()
    slug = models.SlugField()

    def __str__(self):
        return self.product_name


class Shopper(models.Model):
    user = models.OneToOneField(
        User, on_delete=models.CASCADE, null=True, blank=True)
    name = models.CharField(max_length=250, null=True)
    email = models.CharField(max_length=250, null=True)

    def __str__(self):
        return self.name


class Order(models.Model):
    shopper = models.ForeignKey(
        Shopper, on_delete=models.SET_NULL, null=True, blank=True)
    order_date = models.DateTimeField(auto_now_add=True)
    trans_id = models.CharField(max_length=250, null=True)
    ordered = models.BooleanField(default=False)

    def __str__(self):
        return str(self.trans_id)

    @property
    def cart_total_items(self):
        total_items = self.item_set.all()
        cart_total_items = sum([item.quantity for item in total_items])
        return cart_total_items

    def cart_total(self):
        total_items = self.item_set.all()
        cart_total = sum([item.total for item in total_items])
        return cart_total


class Item(models.Model):
    product = models.ForeignKey(Product, on_delete=models.SET_NULL, null=True)
    order = models.ForeignKey(Order, on_delete=models.SET_NULL, null=True)
    quantity = models.IntegerField(default=0, null=True, blank=True)
    added = models.DateTimeField(auto_now_add=True)

    @property
    def total(self):
        total = int(self.product.price) * int(self.quantity)
        return total
Вернуться на верх