我有一个方案对此最合适。
我有一个Articles表(例如比萨饼,饮料等)
class Articles(models.Model):
restaurant = models.ForeignKey(Restaurant, on_delete=models.CASCADE , blank=True, null=True)
articlename = models.CharField(max_length=50, null=False, blank=False)
price = models.DecimalField(max_digits=10, decimal_places=2)
category = models.ForeignKey(Categories, on_delete=models.CASCADE)
ingredient = models.ManyToManyField(Ingredient) #done
articleoptionnames = models.ForeignKey(ArticlesOptionsName , on_delete=models.CASCADE)
第二张表是文章选项(例如打顶(1次,2次或3次),额外的调味料等)
class ArticlesOptions(models.Model):
articleoptionrestaurant = models.ForeignKey(Restaurant, on_delete=models.CASCADE , blank=True, null=True)
optionname = models.ForeignKey(ArticlesOptionsName, on_delete=models.CASCADE, related_name="optionnames")
min = models.IntegerField()
max = models.IntegerField()
choice_price = models.DecimalField(max_digits=10, decimal_places=2)
choice = models.CharField(max_length=255)
def __str__(self):
return str(self.optionname)
和三阶表
class orders(models.Model):
restaurant=models.ForeignKey(Restaurant, on_delete=models.CASCADE , blank=True, null=True)
articles=models.ForeignKey(Articles, on_delete=models.CASCADE , blank=True, null=True)
articleoptions=models.ManyToManyField(ArticlesOptions)
totalamount=models.DecimalField(max_digits=10, decimal_places=2)
def __str__(self):
return str(self.articles)
客户将能够一次购买许多商品,然后每个商品都具有多种商品选项(例如4种浇头和4种调味料用户可以选择多种浇头和多种调味料)。那么如何以最佳方式制作订单表?
答案 0 :(得分:1)
您的订单表应进一步细分,以容纳多个商品和商品选项。您的商品选项应与添加到订单中的商品相关,而不应与订单本身相关。因此,我认为您的订单应如下所示,
class Orders(models.Model):
restaurant = models.ForeignKey(Restaurant, on_delete=models.CASCADE, blank=True, null=True)
total_amount = models.DecimalField(max_digits=10, decimal_places=2)
并添加一个订单商品模型,该模型具有特定于该订单的商品,每个商品都有自己的选项,每个选项都有数量。
class OrderArticle(models.Model):
order = models.ForeignKey(Orders, on_delete=models.CASCADE)
article = models.ForeignKey(Articles, on_delete=models.CASCADE)
class OrderArticleOption(models.Model):
article_option = models.ForeignKey(ArticlesOptions, on_delete=models.CASCADE)
order_article = models.ForeignKey(OrderArticle, on_delete=models.CASCADE)
quantity = models.IntegerField(default=1)
希望这会有所帮助!