2013-08-27 94 views
0

我有两个模型,Story和FollowUp。 FollowUp可以拥有Story的外键。故事有一个用户的外键。从查询集获取所有外键

我可以通过user.story_set.all()获取与用户关联的所有Story。我希望在不迭代查询集的情况下,能够获得与所有Storys相关的所有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()) 

(代码的第二部分可能需要一个列表压缩使用ID而不是对象,但你明白了)

0

更简洁的方法是:

FollowUp.objects.filter(story__user=user)