Функция «Добавить в корзину» не выполняется

#django

Вопрос:

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

views.py приложение в корзине:

 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 приложение в корзине:

 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'),


]

 

Модели.py в приложении «корзина»

 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
 

detail product page with add to cart button (just a snippet for the url redirection):

 <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>
 

I don’t understand what happened after modifying products model. The add_to_cart function isn’t even being called. Thanks for any help.

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

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