Django 访问值对象中的反向外键数据
Posted
技术标签:
【中文标题】Django 访问值对象中的反向外键数据【英文标题】:Django accessing reverse foreign key data in values object 【发布时间】:2014-06-12 18:41:52 【问题描述】:我构建一个 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】:只需使用prefetch_related:
posts = Post.objects.filter(topic__name=topic_name).prefetch_related('resources') # resources is the related_name defined for Post in Resource model
【讨论】:
以上是关于Django 访问值对象中的反向外键数据的主要内容,如果未能解决你的问题,请参考以下文章