1

我有两个模型,Story 和 FollowUp。FollowUp 可以有 Story 的外键。故事有一个外键用户。

我可以使用 user.story_set.all() 获取与用户关联的所有故事。我想在不遍历查询集的情况下,能够获得与所有故事相关联的所有 FollowUps。

我最初尝试过 user.story_set.all().followup_set.all(),但这不起作用。

我怎样才能做到这一点?

4

2 回答 2

1

更简单的方法是使用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 而不是对象,但你明白了)

于 2013-08-27T20:54:21.830 回答
0

更简洁的方法是:

FollowUp.objects.filter(story__user=user)
于 2013-08-27T21:32:32.867 回答