如何使用Django模型在每个订单中添加多个食品?

时间:2018-09-03 19:38:05

标签: django django-models

我正在为我哥哥的酒吧构建一个应用程序。他将接单并收取费用。我有一个“食物”和“订单”模型。假设:

class Food(models.Model):
    Name = models.CharField(max_length=50)
    Price = models.DecimalField(max_digits=7, decimal_places=2)
    Stock = models.BooleanField()

class Order(models.Model):
    Date = models.DateField(auto_now=True)
    Product = models.ForeignKey(Food, on_delete=models.PROTECT, null=True, blank=True)
    Quantity = models.IntegerField()

    TotalPrice = models.DecimalField(max_digits=7, decimal_places=2)

我无法弄清楚如何以相同的顺序添加一种以上的食物。还要指定每种食物的数量。

1 个答案:

答案 0 :(得分:1)

您的模型不在这里。您需要三个模型:Order,Food和OrderItem,这是每个订单的食品列表。所以:

class Food(models.Model):
    ...

class Order(models.Model):
    Date = models.DateField(auto_now=True)
    TotalPrice = models.DecimalField(max_digits=7, decimal_places=2)

class OrderItem(models.Model):
    Order = models.ForeignKey(Order, on_delete=models.PROTECT)
    Product = models.ForeignKey(Food, on_delete=models.PROTECT, null=True, blank=True)
    Quantity = models.IntegerField()

现在给定一个Order实例,您可以通过执行my_order.orderitem_set.all()来获得商品。

(请注意,通常的Python样式是使用{_1}},total_priceproduct等属性的小写字母名称。)