簡體   English   中英

Django 如何使用多對多關系?

[英]Django how to use a ManyToMany-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",amount=2,unit='g')],preperation='prep1'))

您需要使用多對多字段。 一個食譜可以有很多成分。

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 然而,如果每本書也有很多作者,那么這將是一個多對多的關系(一本書有很多作者,一個作者有很多書)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM