Есть ли способ добавить несколько классов в корзину в django?

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

Models.py

class Product(models.Model):
category = models.ForeignKey(Category,on_delete=models.CASCADE,verbose_name='Kategori')
name = models.CharField(max_length=200,null=True,verbose_name='Başlık')


class MainVariation(models.Model):
category = models.ForeignKey(Category,on_delete=models.CASCADE,verbose_name='Kategori',blank=True,null=True)
gender = models.ManyToManyField(Gender,verbose_name='Cinsiyet',blank=True,null=True)
mainvar = models.ForeignKey(Product,on_delete=models.CASCADE,verbose_name='Ana Ürün')
name = models.CharField(max_length=200,null=True,verbose_name='Başlık')

Cart.py

from django.conf import settings
from Products.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 __iter__(self):
        for p in self.cart.keys():
            self.cart[str(p)]['product'] = Product.objects.get(pk=p)

        for item in self.cart.values():
            item['total_prices'] = int(item['product'].price * item['quantity'])

            yield item
    
    def __len__(self):
        return sum(item['quantity'] for item in self.cart.values())
    
    def save(self):
        self.session[settings.CART_SESSION_ID] = self.cart
        self.session.modified = True
    
    def add(self, product_id, quantity=1, update_quantity=False):
        product_id = str(product_id)

        if product_id not in self.cart:
            self.cart[product_id] = {'quantity': 1, 'id': product_id}
        
        if product_id in self.cart:
            self.cart[product_id]['quantity'] += int(quantity)

            if self.cart[product_id]['quantity'] == 0:
                self.remove(product_id)
            
        self.save()
    
    def remove(self, product_id):
        if product_id in self.cart:
            del self.cart[product_id]
            self.save()

    def get_total_cost(self):
        for p in self.cart.keys():
            self.cart[str(p)]['product'] = Product.objects.get(pk=p)

        return int(sum(item['product'].price * item['quantity'] for item in self.cart.values()))

    def get_item(self, product_id):
        if str(product_id) in self.cart:
            return self.cart[str(product_id)]
        else:
            return None

Отлично работает только при добавлении товара в корзину.

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