Проблема с полем, которое ожидало число, но получило другое значение

это ошибка Я использую django 4.0.2 и создаю корзину, но когда я делаю check out, я получаю эту ошибку. есть какие-нибудь предложения, чтобы заставить его работать? буду признателен за помощь

У меня в checkout.py есть такой код

class Checkout(LoginRequiredMixin, View):

    def post (self, request):
        addres = request.POST.get('addres')
        comment = request.POST.get('comment')
        cart = request.session.get('cart')
        user= request.session.get('user')
        product = Product.get_product_by_id(cart)
        print(addres, comment, User, cart, product )


        for product in product:

            print(cart.get(str(product.id)))

            order = Order(user_id=user,
                          product=product,
                          price=product.price,
                          addres=addres,
                          comment=comment,
                          quantity=cart.get(str(product.id)))
            order.save()

        request.session['cart'] = {}


        return redirect ('cart:cart_detail')

# У меня есть код cart.py, в котором есть некоторые значения, но я не могу понять, в чем проблема. Я следую некоторым руководствам, чтобы сделать этот код. мой cart.py

    from django.conf import settings

from product.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:
            cart = self.session[settings.CART_SESSION_ID] = {}
        
        self.cart = cart


    def add(self, product):
        if str(product.id) not in self.cart.keys():
            self.cart[product.id]={
                "product_id": product.id,
                "title":product.title,
                'quantity': 1, 'id': int(product.id),
                "image":product.image.url,
                "thumbnail":product.thumbnail.url,
                "price": str(product.price)
                
            }
        else:
            for key, value in self.cart.items():
                if key== str(product.id):
                    value["quantity"] = value["quantity"]+ 1
                    break 
        
        self.save()

    def save(self):
        self.session["cart"] = self.cart
        self.session.modified = True


    def remove(self, product):
        product_id = str(product.id)
        if product_id in self.cart:
            del self.cart[product_id]
            self.save()

    def decrement(self, product):
        for key, value in self.cart.items():
            if key == str(product.id):
                value["quantity"] = value["quantity"]- 1
                if value["quantity"] < 1:
                    self.remove(product)
                else:
                    self.save()
                break
            else:
                print("the item does not exist in the cart")
                
    

    def clear(self):
        self.session["cart"] = {}
        self.session.modified = True

 
this is my user model 

from enum import unique
from statistics import mode
from django.conf import settings
from django.db import models
from django.contrib.auth.models import AbstractUser

from limpiaC.settings import MEDIA_URL, STATIC_URL




class Gender(models.Model):
    name = models.CharField(max_length=255)


    def __str__(self):
        return self.name 
    

class User(AbstractUser):


    identification = models.CharField(max_length=255, unique=True)
    image = models.ImageField(upload_to='profile_uploads/', blank=True, null=True,default='images/defaultProfile.jpg')
    gender = models.ForeignKey(Gender, related_name='genders', on_delete=models.CASCADE)
    company = models.CharField(max_length=255)
    state = models.CharField(max_length=255)
    zip = models.CharField(max_length=255)
    description = models.TextField(blank=True, null=True)
    date_added = models.DateTimeField(auto_now_add=True)
    dateofbirth = models.DateField

    def get_image(self):
        if self.image:
            return '{}{}'.format(MEDIA_URL, self.image)
        return '{}{}'.format(STATIC_URL, 'images/defaultProfile.jpg')

В этой части кода:

order = Order(user_id=user,
                      product=product,
                      price=product.price,
                      addres=addres,
                      comment=comment,
                      quantity=cart.get(str(product.id))) # HERE

Вы обращаетесь ко всему объекту корзины (который сохраняется в виде JSON или dict?)

Вам нужно получить доступ только к полю количества, поэтому используйте:

    order = Order(user_id=user,
                      product=product,
                      price=product.price,
                      addres=addres,
                      comment=comment,
                      quantity=cart.get(str(product.id))["quantity"]) # <--
Вернуться на верх