Есть ли способ добавить несколько классов в корзину в 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
Отлично работает только при добавлении товара в корзину.