Запрос к реляционной таблице в базе данных 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 и количество, связанное с ним. Заранее благодарю

Вернуться на верх