通过直接查询中间模型来访问其他字段

时间:2018-07-09 17:26:01

标签: django model

我有以下问题: 我需要获取配方的配料数量。

这是我的模型。py:

class Ingredient(models.Model):
    name = models.CharField(max_length=100)

    def __str__(self):
        return self.name

class Recipe(models.Model):
    name = models.CharField(max_length=100)
    ingredients = models.ManyToManyField(Ingredient, through='RecipeHasIngredients')

    def __str__(self):
        return self.name

class RecipeHasIngredients(models.Model):
    ingredient = models.ForeignKey(Ingredient, on_delete=models.CASCADE)
    recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE)
    quantity = models.IntegerField()

    def __str__(self):
        return str(self.recipe)

1 个答案:

答案 0 :(得分:2)

有两种解决方案:

  1. 直接查询RecipeHasIngredients

    RecipeHasIngredients.objects.filter(recipe = recipe)

  2. 使用方式

    recipe_instance.ingredients.through.objects.all()

在两种情况下,您都会获得给定食谱的RecipeHasIngredients个实例的列表