Django在值对象中访问反向外键数据
我正在做一个内容管理系统(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 个回答
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