Фильтрация через два отношения внешнего ключа в Django - PullRequest
3 голосов
/ 01 февраля 2012

У меня есть три модели:

class Studio(models.Model):
    name = models.CharField("Studio", max_length=30, unique=True)

class Film(models.Model):
    studio = models.ForeignKey(Studio, verbose_name="Studio")
    name = models.CharField("Film Name", max_length=30, unique=True)

class Actor(models.Model):
    film = models.ForeignKey(Film, verbose_name="Film")
    name = models.CharField("Name", max_length=30, unique=True)

Я хочу запросить Актера, чтобы узнать, существует ли конкретная комбинация Студии, Фильма и Актера в базе данных.Я знаю, как проверить, существует ли Актер.Я знаю, как отфильтровать имя актера и название фильма.Существует ли однострочный метод для запроса имени актера, имени фильма и имени студии (два обхода цепочки внешних ключей)?

Ответы [ 3 ]

7 голосов
/ 01 февраля 2012

Вы можете сделать это так:

Actor.objects.filter(name="actorname",film__name="filmname", film__studio__name="studioname")

Документацию можно найти здесь

5 голосов
/ 01 февраля 2012

Просто продолжайте цепочку __, чтобы продолжить движение:

Actor.objects.filter(film__studio__name='Something')
3 голосов
/ 01 февраля 2012

Что-то по линии

Actor.objects.filter(name='foo', film__name='bar', film__studio__name='baz')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...