Как обновить количество товаров в проекте 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