2012-02-01 2 views
2

У меня есть три модели:фильтрация через два иностранных ключевых отношений в Джанго

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) 

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

ответ

6

Вы можете сделать это следующим образом:

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

документации можно найти here

3

Просто держать сцепление __ держать обход идти:

Actor.objects.filter(film__studio__name='Something') 
2

Что-то вдоль линии

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

Смежные вопросы