Разрабатываю тестовые проект, интернет магазин на Django.
В данным момент добавление в корзину возможно только авторизированому пользователю.
Модель ссылается на пользователя модели из корбки django.
Как лучше реализовать функционал зарегестрированного пользователя и анонимного в процессе оформления заказа...?
Осуществит
class OrderProduct(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,
on_delete=models.CASCADE, blank=True, null=True)
ordered = models.BooleanField(default=False)
product = models.ForeignKey(Product, on_delete=models.CASCADE)
quantity = models.IntegerField(verbose_name='Количество', default=1)
def __str__(self):
return f"{self.quantity} of {self.product.name}"
def get_total_item_price(self):
return self.quantity * self.product.price
def get_total_discount_item_price(self):
return self.quantity * self.product.discount_price
def get_total_amount_saved(self):
return self.get_total_item_price() - self.get_total_discount_item_price()
def get_final_price(self):
if self.product.discount_price:
return self.get_total_discount_item_price()
return self.get_total_item_price()
class Order(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,
on_delete=models.CASCADE)
products = models.ManyToManyField(OrderProduct)
start_date = models.DateTimeField(auto_now_add=True)
ordered_date = models.DateTimeField()
ordered = models.BooleanField(default=False)
def __str__(self):
return str(self.user)
def get_total(self):
total = 0
for order_product in self.products.all():
total += order_product.get_final_price()
return total