[英]Can't I add a list to my models.py in django?
I'm quite new in Django and in this project I need to manage information about a restaurant.我是 Django 的新手,在这个项目中我需要管理有关餐厅的信息。 The problem is that I can't add more than one ingredient required to a recipe
问题是我不能添加超过一种食谱所需的成分
My models.py
is this:我的
models.py
是这样的:
from django.db import models
# Create your models here.
class Ingredient(models.Model):
name = models.CharField(max_length=35)
quantity = models.IntegerField()
unit = models.CharField(max_length=5)
unit_price = models.FloatField()
def __str__(self):
return self.name
class MenuItem(models.Model):
title = models.CharField(max_length=35)
price = models.FloatField()
example = models.ImageField()
def __str__(self):
return self.title
class RecipeRequirement(models.Model):
menu_items = models.ForeignKey(MenuItem, default = 1, on_delete=models.SET_DEFAULT)
ingredient = models.CharField(max_length=35)
quantity = models.FloatField()
def __str__(self):
return str(self.menu_items)
class Purchase(models.Model):
menu_item = models.ForeignKey(MenuItem, default=1, on_delete=models.SET_DEFAULT)
timestamp = models.DateTimeField()
def __str__(self):
return 'Purchase ' + str(self.menu_item) + str(self.timestamp)
After replacing ingredients = models.CharField()
for ingredients = models.ManyToManyField()
a list of all ingredients appear:将
ingredients = models.CharField()
替换为ingredients = models.ManyToManyField()
后,出现所有成分的列表:
But when I add a new ingredient to my Ingredient
model, it automatically appears in every single menu_item
:但是当我向我的
Ingredient
model 添加新成分时,它会自动出现在每个menu_item
中:
You need to have a ManyToMany relationship in your RecipeRequirement model. This will allow you to select multiple ingredients for any one RecipeRequirement object. Read more here: Django ManyToMany Fields您需要在 RecipeRequirement model 中建立多对多关系。这将允许您为任何一个 RecipeRequirement object 提供 select 多种成分。在此处阅读更多信息: Django ManyToMany 字段
class RecipeRequirement(models.Model):
menu_items = models.ForeignKey(MenuItem, default = 1, on_delete=models.SET_DEFAULT)
ingredients = models.ManyToManyField(Ingredient)
quantity = models.FloatField()
def __str__(self):
return str(self.menu_items)
Set ingredients in the RecipeRequirement class as a ManyToMany field on the Ingredient class:将 RecipeRequirement class 中的成分设置为 Ingredient class 上的 ManyToMany 字段:
class RecipeRequirement(models.Model):
menu_items = models.ForeignKey(MenuItem, default = 1, on_delete=models.SET_DEFAULT)
ingredients = models.ManyToManyField(Ingredient)
quantity = models.FloatField()
def __str__(self):
return str(self.menu_items)
I believe that your Ingredient
class must have a ForeignKey
associated with the RecipeRequirement
in order to add more than one ingredient related to the recipe.我相信您的
Ingredient
class 必须具有与RecipeRequirement
相关联的ForeignKey
才能添加与配方相关的不止一种成分。
I suggest using a website like https://drawsql.app/ in order to obtain a better visualization of your database relationships.我建议使用像https://drawsql.app/这样的网站,以便更好地可视化您的数据库关系。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.