我有两个模型,Story和FollowUp。 FollowUp可以拥有Story的外键。故事有一个用户的外键。从查询集获取所有外键
我可以通过user.story_set.all()获取与用户关联的所有Story。我希望在不迭代查询集的情况下,能够获得与所有Storys相关的所有FollowUps。
我最初尝试过user.story_set.all()。followup_set.all(),但那不起作用。
我该如何做到这一点?
我有两个模型,Story和FollowUp。 FollowUp可以拥有Story的外键。故事有一个用户的外键。从查询集获取所有外键
我可以通过user.story_set.all()获取与用户关联的所有Story。我希望在不迭代查询集的情况下,能够获得与所有Storys相关的所有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)