Django 通过直接查询中间模型访问额外字段
我有以下问题: 我需要得到一份食谱的配料量 这是my models.py:Django 通过直接查询中间模型访问额外字段,django,model,Django,Model,我有以下问题: 我需要得到一份食谱的配料量 这是my models.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) ingredient
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)
有两种解决方案:
RecipeHasingElements
:
RecipeHasingElements.objects.filter(配方=配方)在这两种情况下,您都会得到给定配方的
RecipeHasingComponents
实例列表使用第一个解决方案,我只得到配方的名称,但我需要数量。对于第二个解决方案,我得到一个错误:类型对象“RecipeHasingElements”没有属性“all”。那么,我如何获取成分的数量呢?第一个解决方案返回一个列表打印(类型(值))
以确保它不是字符串,第二个解决方案也已修复。是的,我获取的是RecipeHasingElements的列表,但不是数量。我使用:RecipeHasingElements.objects.filter(recipe=recipe)解决了我的问题.values\u list('quantity',flat=True)