如何解决Django如何使用ManyToMany-Relationship?
我需要一个OneToMany-Relationship,因为我想存储食谱。为此,我有两个模型,一个是食谱,另一个是配料。在搜索该主题时,我总是发现使用外键,但是我不确定它是否是我想要的。我想测试一下,但是找不到任何使用这种关系的方法。
模型:
class Ingredient(models.Model):
ingredient_title = models.CharField(max_length=120)
amount = models.IntegerField()
unit = models.CharField(max_length= 10)
class Recipe(models.Model):
title = models.CharField(max_length=120)
ingredients = models.ForeignKey(Ingredient,on_delete=models.CASCADE) `#Here I am not sure if its right`
preperation = models.TextField(default='Here comes the preperation...')
我尝试创建配方模型,但是在管理页面上我只能选择一种配料,而在外壳中,我不知道该怎么做。
这是我尝试过的:
Recipe.objects.create(title='Essen1',ingredients=[(ingredient_title="ZutatTitel1",amount=2,unit='g'),(ingredient_title="ZutatTitel1",unit='g')],preperation='prep1'))
解决方法
您需要使用ManytoMany Field。食谱可以有很多成分。
class Recipe(models.Model):
title = models.CharField(max_length=120)
ingredients = models.ManyToManyField(Ingredient)
preperation = models.TextField(default='Here comes the preperation...')
recipe_obj = Recipe.objects.create(title='Essen1)
recipe_obj.ingredients.add(ingredient_obj1)
recipe_obj.ingredients.add(ingredient_obj2)
,
正如Neeraj所说,您需要ManyToManyField
而不是ForeignKey
。这是因为一种成分可以具有(或属于)许多配方,而一种配方可以具有许多成分。 ForeignKey
用于多对一关系-例如,一位作者可能有很多书,但是如果每本书只有一位作者,那么它将是多对一关系,所以ForeignKey
。但是,如果每本书也有很多作者,那将是多对多的关系(一本书有很多作者,一位作者有很多本书)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。