Как эффективно объединить два вложенных отношения ForiegnKey? - PullRequest
0 голосов
/ 03 ноября 2019

В модели Django 2.2 у меня есть следующие настройки:

class Kiosk(Model):
    newspapers = ForeignKey('Newspaper')

class Newspaper(Model):
    articles = ForeignKey('Article')

class Article(Model):
    pass

Теперь я могу получить все статьи одной газеты, продаваемые в киоске, например:

kiosk = Kiosk.objects.first()
articles = kiosk.newspapers.first().articles

Что я хочу сделать, так это получить один QuerySet (или RelatedManager), охватывающий все статьи во всех газетах, продаваемых в киосках.

Конечно, я могу добиться этого, перебирая газеты и объединяя списки статей в цикле for, но это кажется неэффективным.

Как я могу получить это от ORM?

1 Ответ

1 голос
/ 03 ноября 2019

Вы должны начать с статьи.

articles = Article.objects.filter(newspaper__kiosk=my_kiosk)
...