Запрос к реляционной таблице в базе данных Django
У меня есть база данных с реляционной таблицей, созданной моими Моделями. Эта таблица содержит всю информацию, которую я пытаюсь запросить, но мне трудно получить из нее значения, которые не являются объектами Модели.
Models.py
class Ingredient(models.Model):
'''All ingredients for any recipe or individual selection'''
ingredient = models.CharField(max_length=50)
department = models.ForeignKey(Department, null=True, on_delete=models.SET_NULL)
def __str__(self):
return self.ingredient
class IngredientDetail(models.Model):
'''A class to identify variable quantities of ingredients'''
recipe = models.ForeignKey('Recipe', null=True, on_delete=models.SET_NULL)
ingredient = models.ForeignKey(Ingredient, null=True, on_delete=models.SET_NULL)
quantity = models.CharField(max_length=1)
class Meta:
verbose_name_plural = 'Ingredient Details'
def __str__(self):
return self.quantity
class Recipe(models.Model):
'''A Recipe class to input new recipes'''
recipe = models.CharField(max_length=50)
ingredients = models.ManyToManyField(Ingredient, through=IngredientDetail)
instructions = models.TextField(null=True)
cuisine = models.ForeignKey(Cuisine, null=True, on_delete=models.SET_NULL)
picture = models.ImageField(upload_to= 'media/', null=True, blank=True)
def __str__(self):
return self.recipe
Создается следующая таблица, в которой есть нужная мне информация:
ID | количество | ingredient_id | recipe_id |
---|---|---|---|
1 | 1 | 5 | 5 |
2 | 1 | 6 | 5 |
3 | 2 | 7 | 5 |
Когда я пытаюсь запросить детали ингредиента с помощью IngredientDetails.objects.filter(recipe_id='5')
, он выдает мне только значения количества, а мне также нужен идентификатор ингредиента. Я неправильно структурировал свои модели, или я упустил из виду очевидное решение этой проблемы? В идеале, я хотел бы иметь возможность написать запрос для recipe_id, и получить ingredient_id и количество, связанное с ним. Заранее благодарю