Django Это поле обязательно для заполнения

Вот в чем проблема Я пытаюсь получить доступ к моей корзине, но в тот момент, когда я вызываю функцию is_valid, она говорит @ ="errorlist">

  • quantity<ul class="errorlist" This field is required.
  • @

    Я новичок в Django и до сих пор не знаю, что я делаю неправильно. Если кто-нибудь может дать мне совет или решение...

    cart.forms.py

    from django import forms
        
    PRODUCT_QUANTITY_CHOICES = [(i, str(i)) for i in range(1, 21)]
    
    
        class CartAddProductForm(forms.Form):
            quantity = forms.TypedChoiceField(choices=PRODUCT_QUANTITY_CHOICES, coerce=int)
            update = forms.BooleanField(required=False, initial=False, widget=forms.HiddenInput)
    
    
    cart.views.py
    from django.shortcuts import render, redirect, get_object_or_404
    from django.views.decorators.http import require_POST
    from shop.models import Product
    from .cart import Cart
    from .forms import CartAddProductForm
    
    
    @require_POST
    def cart_add(request, product_id):
        cart = Cart(request)
        product = get_object_or_404(Product, id=product_id)
        form = CartAddProductForm(request.POST)
    
        if form.is_valid():
            cd = form.cleaned_data
            cart.add(product=product,
                     quantity=cd['quantity'],
                     update_quantity=cd['update'])
        print(form.errors)
        return redirect('cart:cart_detail')
    
    
    def cart_remove(request, product_id):
        cart = Cart(request)
        product = get_object_or_404(Product, id=product_id)
        cart.remove(product)
        return redirect('cart:cart_detail')
    
    
    def cart_detail(request):
        cart = Cart(request)
        return render(request, 'cart/detail.html', {'cart': cart})
    

    cart.cart.py

    from decimal import Decimal
    from django.conf import settings
    from shop.models import Product
    
    
    class Cart(object):
    
        def __init__(self, request):
    
            self.session = request.session
            cart = self.session.get(settings.CART_SESSION_ID)
            if not cart:
                # save an empty cart in the session
                cart = self.session[settings.CART_SESSION_ID] = {}
            self.cart = cart
    
    
        def save(self):
           
            self.session[settings.CART_SESSION_ID] = self.cart
            
            self.session.modified = True
    
        def add(self, product, quantity=1, update_quantity=False):
          
            product_id = str(product.id)
            if product_id not in self.cart:
                self.cart[product_id] = {'quantity': 0,
                                         'price': str(product.price)}
            if update_quantity:
                self.cart[product_id]['quantity'] = quantity
            else:
                self.cart[product_id]['quantity'] += quantity
            self.save()
    
    
        def remove(self, product):
         
            product_id = str(product.id)
            if product_id in self.cart:
                del self.cart[product_id]
                self.save()
    
        def __iter__(self):
    
            product_ids = self.cart.keys()
           
            products = Product.objects.filter(id__in=product_ids)
            for product in products:
                self.cart[str(product.id)]['product'] = product
    
            for item in self.cart.values():
                item['price'] = Decimal(item['price'])
                item['total_price'] = item['price'] * item['quantity']
                yield item
    
        def __len__(self):
    
            return sum(item['quantity'] for item in self.cart.values())
    
        def get_total_price(self):
    
            return sum(Decimal(item['price']) * item['quantity'] for item in
                       self.cart.values())
    
        def clear(self):
            del self.session[settings.CART_SESSION_ID]
            self.session.modified = True
    
    Вернуться на верх