Django访问值对象中的反向外键数据

时间:2014-06-12 18:41:53

标签: python django postgresql orm

我建立一个有趣的CMS,但在查询给定帖子的资源时我被困在django中。

我有以下代码做我想要的:

data = list(Post.objects.filter(topic__name=topic_name).values())
for d in data:
    d["resources"] = list(Resource.objects.filter(post=d["id"]).values())

问题是,在1个查询中选择具有主题的帖子列表后,它会为每个资源列表再创建1个查询。是否有更有效的方法将资源字典纳入每个帖子?

1 个答案:

答案 0 :(得分:0)

只需使用prefetch_related

posts = Post.objects.filter(topic__name=topic_name).prefetch_related('resources') # resources is the related_name defined for Post in Resource model