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 访问值对象中的反向外键数据的主要内容,如果未能解决你的问题,请参考以下文章

Django Rest DRF:从反向关系访问外键引用

如何从 Django 模板中的外键访问值

通过django模板中的外键关系快速访问模型属性

如何通过django中的多级反向外键获取相关对象查询集?

模板中的 Django 外键

姜戈。从表单对象访问模板中的外键字段