以“Pizza”为例,我有一个浇头模型、一个PizzaTemplate模型和一个“Pizza”,现在我需要记录每个比萨的浇头数量。
例如,我有一个'辣香肠比萨',我需要记录1勺奶酪,1勺辣香肠。然后我可能有一个'辣香肠比萨-额外的辣香肠',这将是1勺奶酪和2勺辣香肠,它使用相同的选择浇头,这已经定义,我只需要记录多少每一个。
我的当前models.py如下所示:
class Topping(models.Model):
name = models.CharField(max_length=100)
unit = models.CharField(max_length=100)
class PizzaTemplate(models.Model):
name = models.CharField(max_length=100)
toppings = models.ManyToManyField(Topping)
class Pizza(models.Model):
name = models.CharField(max_length=100)
我想我需要另一个这样的模型:
class Ingredients(models.Model):
pizza = models.ForeignKey(Pizza)
topping = models.ForeignKey(Topping)
amount = models.IntegerField()
我不确定这是正确的方法还是有更聪明的方法?
这个想法是为了能够创建一个新的比萨饼,选择一个浇头模板,然后为这个特定的比萨饼选项指定每种浇头的不同数量。
我的想法是在页面加载时为每个输入动态创建表单,例如,获取浇头列表并为每个输入生成一个标签和输入框,但我越是沿着这条路走,我就越觉得我在违背规则,可能有一个更好/更明显的方法。
我在看https://docs.djangoproject.com/en/dev/topics/db/models/#extra-fields-on-many-to-many-relationships,但我不确定这是否与我正在尝试的内容完全相关。
1条答案
按热度按时间1szpjjfi1#
您可以尝试使用模型表单。
https://docs.djangoproject.com/en/4.1/topics/forms/modelforms/
在视图中,可以使用这些表单创建新的比萨饼并指定比萨饼的配料。