Django - фильтровать набор запросов по другому набору запросов через связанное поле - PullRequest
1 голос
/ 28 мая 2020

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

class Developer(models.Model):
    name = models.CharField(max_length=100, default="Unknown")

class Game(models.Model):
    name = models.CharField(max_length=300)
    developer = models.ForeignKey(Developer, related_name="games", on_delete=models.CASCADE)
    platform = models.CharField(max_length=40)

Я пробовал несколько подходов, но, похоже, не могу понять ничего, что работает.

1 Ответ

1 голос
/ 28 мая 2020

Вы можете запросить это с помощью:

Developer.objects.filter(<b>games__platform=<i>'name-of-platform'</i></b>).distinct()

Без .distinct() [Django -doc] , то же разработчик будет возвращен несколько раз, если они разработали несколько Game для одной и той же платформы. Если это не проблема, вы, конечно, можете опустить .distinct().

...