我有两个模型,Recipe
和Ingredient
。食谱模型与成分有许多关系,但我还需要能够指定成分的数量。我的模特目前看起来像:
class Ingredient(models.Model):
name = models.CharField(max_length="256", db_index=True, null=True)
class Recipe(models.Model):
...
ingredients = models.ManyToManyField(Ingredient, related_name="RecipeIngredients", db_index=True)
但显然每种配方每种配料的含量都不同。所以我需要能够做到这样的事情:
cakeRecipe = Recipe.objects.get(pk=1)
flour = Ingredient.objects.get(pk=2)
cakeRecipe.ingredients.add(flour, '200 grams')
但我不知道怎么做。任何帮助将不胜感激。谢谢:))
答案 0 :(得分:3)
您需要按照Extra fields on many-to-many relationships:
上的说明操作class RecipeIngredient(models.Model):
recipe = models.ForeignKey('Recipe')
ingredient = models.ForeignKey('Ingredient')
quantity = models.CharField(max_length=200)
class Recipe(models.Model):
ingredients = models.ManyToManyField(Ingredient, through=RecipeIngredient)
答案 1 :(得分:2)
你想要一个中间模型。就像在 - 使用'through'参数在两者之间链接的一些模型。像这样:
class Ingredient(models.Model):
name = models.CharField(max_length="256", db_index=True, null=True)
class Recipe(models.Model):
...
ingredients = models.ManyToManyField(Ingredient,
related_name="RecipeIngredients",
db_index=True,
through='Quantity')
class Quantity(models.Model):
ingrediant = models.ForeignKey(Ingredient)
recipe = models.ForeignKey(Recipe)
amount = models.IntegerField()
#... any other fields ...
详细了解here。