Как использовать обратное отношение в моем запросе? (django)

Я пытаюсь сделать запрос, чтобы показать все филиалы, в которых есть еда. Я много раз пробовал, но не могу заставить его работать. Кто-нибудь может мне помочь?

Вот мои модели:

class Branch(models.Model):
    name = models.CharField(max_length=100)
    created = models.DateTimeField(auto_now_add=True)
    is_main = models.BooleanField()
    description = models.TextField(max_length=500)

    food_restaurant_category = models.OneToOneField(FoodRestaurantCategory, on_delete=models.CASCADE)
    restaurant = models.ForeignKey(Restaurant, on_delete=models.CASCADE)
    branch_address = models.OneToOneField(BranchAddress, on_delete=models.CASCADE)
    manager = models.OneToOneField("accounts.Staff", on_delete=models.CASCADE)


class Food(models.Model):
    name = models.CharField(max_length=100)
    image = models.ImageField(upload_to=upload_path)
    description = models.TextField(max_length=500)
    created = models.DateTimeField(auto_now_add=True)

    meal_category = models.ManyToManyField(MealCategory, related_name="meal")
    food_restaurant_category = models.ManyToManyField(FoodRestaurantCategory, related_name="food_cat")

class Menu(models.Model):
    inventory = models.PositiveIntegerField()
    price = models.DecimalField(validators=[MinValueValidator(0.0)], max_digits=10, decimal_places=1)

    food = models.ForeignKey(Food, on_delete=models.CASCADE, related_name="food_rel")
    branch = models.ForeignKey(Branch, on_delete=models.CASCADE, related_name="branch_rel")

Вы можете получить Branches, для которых существует Menu, ссылающийся на Food объект food с помощью:

Branch.objects.filter(branch_rel__food=food)

Однако, похоже, нет особого смысла указывать related_name='food_rel' и related_name='branch_rel', поскольку это имя отношения в обратном направлении, скорее всего related_name='menus', в таком случае вы фильтруете с помощью Branch.objects.filter(menus__food=food).

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