2013-08-27 3 views
0

У меня есть две модели: Story и FollowUp. FollowUp может иметь внешний ключ Story. История имеет внешний ключ пользователя.Получение всех внешних ключей из QuerySet

Я могу получить всю историю, связанную с пользователем с user.story_set.all(). Я бы хотел, чтобы без повторения через набор запросов мог получить все FollowUps, связанные со всеми историями.

Я изначально попробовал user.story_set.all(). Followup_set.all(), но это не работает.

Как это сделать?

ответ

0

Легче всего было бы использовать prefetch_related для предварительной загрузки всех объектов, а затем просто итерация:

followups = [] 
for story in user.story_set.all().prefetch_related(): 
    followups.extend(story.followup_set.all()) 

В качестве альтернативы, вы можете сделать:

followups = Followup.objects.filter(story__in = user.story_set.all()) 

(Вторая часть коды может необходимо использовать сжатие списков для использования идентификаторов, а не объектов, но вы получите идею)

0

Более краткий подход:

FollowUp.objects.filter(story__user=user) 
Смежные вопросы