Функция добавления в корзину не выполняется

Моя функция добавления в корзину работала, но я внес некоторые изменения в модель продуктов, которые не были связаны с корзиной. Я создал только функцию для добавления значений по умолчанию. Теперь моя функция добавления в корзину не работает. Я даже добавил функцию печати в начале функции, но она никогда не печатается. Моя функция просмотра работает (для просмотра корзины), но не добавление.

views.py in cart app:

def add_to_cart(request, slug):
   print("add_to_cart pressed")
   request.session.set_expiry(100000000)
   try:
       the_id = request.session['cart_id']
   except:
       #create cart id
       new_cart = Cart()
       new_cart.save()
       request.session['cart_id'] = new_cart.id
       the_id = new_cart.id
   cart = Cart.objects.get(id=the_id)
   try:
       product = Product.objects.get(slug=slug)
   except Product.DoesNotExist:
       pass
   except:
       pass
   product_variations = []
   if request.method == 'POST':
       qty = request.POST['qty']
       for item in request.POST:
           key = item
           val = request.POST[key]
           try:
               v = Variation.objects.get(product=product, category__iexact=key, title__iexact=val)
               product_variations.append(v)
           except:
               pass
       cart_item = CartItem.objects.create(cart=cart, product=product)
       if len(product_variations) > 0:
           cart_item.variations.add(*product_variations)
       cart_item.quantity = qty
       cart_item.save()
       print("cart item added")


       return HttpResponseRedirect(reverse("carts:cart"))


   return HttpResponseRedirect(reverse("carts:cart"))

urls.py in cart app:

app_name='carts'

urlpatterns =[
   path('cart/', views.view, name='cart'),
   path('cart/<id>/', views.remove_from_cart, name='remove_from_cart'),
   path('cart/<slug:slug>/', views.add_to_cart, name='add_to_cart'),


]

models.py в приложении cart

class Cart(models.Model):
   total = models.DecimalField(max_digits=100, decimal_places=2, default=0.00)
   timestamp = models.DateTimeField(auto_now_add=True)
   updated = models.DateTimeField(auto_now=True)
   active = models.BooleanField(default=True)

   def __str__(self):
       return "Cart id: %s" %(self.id)

class CartItem(models.Model):
   cart = models.ForeignKey(Cart, on_delete=models.CASCADE, null=True, blank=True)
   product = models.ForeignKey(Product,on_delete=models.CASCADE)
   variations = models.ManyToManyField(Variation, blank=True)
   quantity = models.IntegerField(default=1)
   line_total = models.DecimalField(default=10.99, max_digits=100, decimal_places=2)
   #notes = models.TextField(null=True, blank=True)
   timestamp = models.DateTimeField(auto_now_add=True, auto_now=False)
   updated = models.DateTimeField(auto_now=True)

   #objects = CartManager()

   def __str__(self):
       try:
           return str(self.cart.id)
       except:
           return self.product.name

страница товара с кнопкой добавления в корзину (просто сниппет для перенаправления url):

<form class="form pull-right" method="POST" action="{% url 'carts:add_to_cart' product.slug %}">
                   {% csrf_token %}
                  <input class="btn btn-outline-dark" type="submit" value="Add to Cart">
                   <input class="form-control" type="number" name="qty" value="1">
                   {% if product.variation_set.all %}
                   {% if product.variation_set.sizes %}
                   <select class="form-control" name="size">
                       {% for item in product.variation_set.sizes %}
                         <option value="{{ item.title|lower }}">{{ item.title|capfirst }}</option>
                       {% endfor %}
                   </select>
                   {% endif %}

                   {% if product.variation_set.colors %}
                   <select class="form-control" name="color">
                       {% for item in product.variation_set.colors %}
                         <option value="{{ item.title|lower }}">{{ item.title|capfirst }}</option>
                       {% endfor %}
                   </select>
                   {% endif %}


                   {% endif %}
                 </form>

Я не понимаю, что произошло после модификации модели товаров. Функция add_to_cart даже не вызывается. Спасибо за любую помощь.

Примечание: при изменении модели продуктов моя база данных полностью сломалась, поэтому мне пришлось удалить всю базу данных и запустить makemigrations и migrate, чтобы восстановить ее. Я не уверен, что именно это привело к поломке.

дополнительная правка: Я добавил немного javascript, чтобы определить, была ли нажата кнопка. Оповещение так и не сработало. Так что, возможно, это проблема с формой. Я не уверен.

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