Добавление товара в корзину с помощью python в Django
Я хочу сделать простую функцию, которая собирает ID продукта и добавляет его в корзину пользователя при нажатии кнопки "добавить в корзину". У меня есть таблица корзины и таблица продуктов, но я пытаюсь найти правильную функцию для добавления продукта в корзину. Любая помощь, я очень новичок в Python и Django и ищу помощи, чтобы направить меня на правильный путь.
class Cart(models.Model):
cart_id = models.Charfield(primary_key=True)
total = models.DecimalField(max_digits=9,decimal_places=2)
quantity = models.IntegerField()
products = models.ManyToManyField(Product)
class Product(models.Model):
prod_id = models.CharField(max_length=15, null=True)
name = models.CharField(max_length=200)
price = models.DecimalField(max_digits=10,decimal_places=2)
description = models.TextField(max_length=1000)
def cart_add(request, prod_id):
item = Product.objects.get(pk=prod_id)
Я знаю, что это не так много для работы, но любая помощь, я просто ищу некоторую помощь в создании функции добавления в корзину
Вам необходимо отношение между Cart* и User
class Cart(models.Model):
cart_id = models.Charfield(primary_key=True)
total = models.DecimalField(max_digits=9,decimal_places=2)
quantity = models.IntegerField()
products = models.ManyToManyField(Product)
user = models.OneToOneField(User)
class Product(models.Model):
prod_id = models.CharField(max_length=15, null=True)
name = models.CharField(max_length=200)
price = models.DecimalField(max_digits=10,decimal_places=2)
description = models.TextField(max_length=1000)
def cart_add(request, prod_id):
item = Product.objects.get(pk=prod_id)
request.user.cart.add(item)
Вам необходимо иметь связь между моделью Cart и моделью User, чтобы вы могли сохранять продукт в соответствующую корзину пользователя.
Более того, хорошим подходом будет добавление еще одной модели с именем CartItem и хранение информации о товаре в этой модели вместо того, чтобы хранить товар непосредственно в модели Cart. Это связано с тем, что когда мы добавляем товар в корзину, нам может понадобиться сохранить и позже обновить дополнительную информацию о товаре, например, 'quantity'.
class Cart(models.Model):
cart_id = models.Charfield(primary_key=True)
total = models.DecimalField(max_digits=9,decimal_places=2)
quantity = models.IntegerField()
user = models.OneToOneField(User)
class CartItem(models.Model):
cart = models.ForeignKey(Cart, on_delete=models.CASCADE)
product = models.ForeignKey(Product, on_delete=models.CASCADE)
product_quantity = models.IntegerField(default=0)
user = models.OneToOneField(User)
В этом случае все, что вам нужно сделать, это создать новый объект CartItem в представлении "Добавить в корзину":
def cart_add(request, prod_id, qty):
item = Product.objects.get(pk=prod_id)
cart_obj = Cart.objects.get(user=request.user)
Cart.objects.create(cart=cart_obj, product=item, product_quantity=qty)
Надеюсь, это поможет :)