一个纯粹的工作逻辑问题(没有代码)。例如,我们有一个与用户关联的购物车
class Cart(models.Model):
""" Корзина """
profile = models.ForeignKey(Profile, on_delete=models.CASCADE, verbose_name='Покупатель')
products = models.ManyToManyField('CartProduct', blank=True, related_name='related_cart')
final_price = models.IntegerField(default=0, verbose_name='Общая цена')
def __str__(self):
return str(self.id)
class Meta:
verbose_name = 'Корзина'
verbose_name_plural = 'Корзины'
class CartProduct(models.Model):
""" Объект корзины """
profile = models.ForeignKey(Profile, on_delete=models.CASCADE, verbose_name='Покупатель')
product = models.ForeignKey(Product, on_delete=models.CASCADE)
quantity = models.PositiveIntegerField(default=1, blank=True)
final_price = models.IntegerField(verbose_name='Общая цена', blank=True)
def save(self, *args, **kwargs):
self.final_price = self.quantity * self.product.price
super().save(*args, **kwargs)
def __str__(self):
return "Объект: {} (для корзины)".format(self.product.title)
class Meta:
verbose_name = 'Объект корзины'
verbose_name_plural = 'Объекты корзины'
class Order(models.Model):
""" Заказ """
profile = models.ForeignKey(Profile, on_delete=models.CASCADE, verbose_name='Покупатель')
products = models.ManyToManyField('OrderItem', blank=True, related_name='related_order')
billid = models.CharField(max_length=200)
comment = models.TextField(default='BagleyEcommerce')
final_price = models.IntegerField(default=1)
paid = models.BooleanField(default=False)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
def __str__(self):
return str(self.id)
class Meta:
verbose_name = 'Заказ'
verbose_name_plural = 'Заказы'
class OrderItem(models.Model):
""" Предмет заказа """
profile = models.ForeignKey(Profile, on_delete=models.CASCADE, verbose_name='Покупатель')
product = models.ForeignKey(Product, on_delete=models.CASCADE)
quantity = models.PositiveIntegerField(default=1, blank=True)
final_price = models.IntegerField(verbose_name='Общая цена', blank=True)
def save(self, *args, **kwargs):
self.final_price = self.quantity * self.product.price
super().save(*args, **kwargs)
def __str__(self):
return "Объект: {} (заказ)".format(self.product.title)
class Meta:
verbose_name = 'Объект заказа'
verbose_name_plural = 'Объекты заказа'
问题:是否可以将订单直接链接到购物篮?或者在该人将更多商品添加到购物篮并付款后,该人按下了支付按钮(创建了与购物篮相关的订单)。购买后,他会得到篮子里的产品(是在付款之前还是之后?)或者你需要像我一样在订单中复制订单?
如果不清楚,请写在评论中,我会尽力回答。