Как я могу получить доступ к "промежуточной" таблице join с помощью стандартного фильтра django?
Как я могу получить определенный набор экземпляров RecipeIngredient, предполагая, что я знаю рецепт и его ингредиенты? Я пытался использовать следующий код:
RecipeIngredient.objects.filter(recipe=recipe, ingredient__in=recipe.ingredients.all())
Но он возвращает мне кверисет одного экземпляра, но не нескольких.
class Recipe(models.Model):
    name = models.CharField(max_length=200, verbose_name='Name of a recipe')
    ingredients = models.ManyToManyField(
        'Ingredient',
        through='RecipeIngredient',
        verbose_name='Ingredients of a recipe'
    )
class Ingredient(models.Model):
    name = models.CharField(
        max_length=256,
        verbose_name='Name of an ingredient'
    )
class RecipeIngredient(models.Model):
    recipe = models.ForeignKey(
        'Recipe',
        on_delete=models.CASCADE
    )
    ingredient = models.ForeignKey(
        'Ingredient',
        on_delete=models.CASCADE
    )
    amount = models.IntegerField(
        validators=[
            MinValueValidator(1),
            MaxValueValidator(44640)
        ],
        verbose_name='Amount of ingredients'
    )
                
Я не уверен в этом, но попробуйте.
Сначала создайте новый класс, например:
class RecipeIngredientManager(models.Manager):
def function_name(self):
    return self.filter(recipe=recipe, ingredient__in=recipe.ingredients.all())
Затем сделайте следующее в классе RecipeIngredient:
objects = ProductManager()
После того, как вы все сделали, сделайте makemigration и migrate:
python manage.py makemigrations
python manage.py migrate