我有两个模型,Story 和 FollowUp。FollowUp 可以有 Story 的外键。故事有一个外键用户。
我可以使用 user.story_set.all() 获取与用户关联的所有故事。我想在不遍历查询集的情况下,能够获得与所有故事相关联的所有 FollowUps。
我最初尝试过 user.story_set.all().followup_set.all(),但这不起作用。
我怎样才能做到这一点?
我有两个模型,Story 和 FollowUp。FollowUp 可以有 Story 的外键。故事有一个外键用户。
我可以使用 user.story_set.all() 获取与用户关联的所有故事。我想在不遍历查询集的情况下,能够获得与所有故事相关联的所有 FollowUps。
我最初尝试过 user.story_set.all().followup_set.all(),但这不起作用。
我怎样才能做到这一点?
更简单的方法是使用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 而不是对象,但你明白了)
更简洁的方法是:
FollowUp.objects.filter(story__user=user)