python - 为什么 Django 的 RelatedManager 不在目标对象上缓存调用查找的对象?

标签 python django django-orm django-related-manager

如果我有以下型号:

class Fubar(models.Model):
    name = models.CharField()

class Related(models.Model):
    fubar = models.ForeignKey(Fubar)

如果我使用 .related_set 访问 Related,我希望 ORM 会神奇地缓存父 Fubar 对象:

fubar = Fubar.objects.all()[0]
related = fubar.related_set.all()[0]
related.fubar

这会产生 3 个查询,而我预计它只会产生 2 个,因为 related.fubar 可以在此上下文中优化为我调用 RelatedManager 的同一对象。

最佳答案

虽然我不确定为什么这不起作用(除了魔法减少),但您可以轻松地避免额外的查询

fubar.related_set.select_related('fubar')[0]

关于python - 为什么 Django 的 RelatedManager 不在目标对象上缓存调用查找的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9077424/

相关文章:

django - Django跨越关系

python 在服务器上部署应用程序

python - bool 字段不以 Django 形式保存

django - django 中的独特约束

python - 当我尝试运行我的服务器时,我有一个程序,它是一个非常简单的服务器,因为我对 Django 还很陌生

python - 通过 Django ManyToMany 高效查询额外字段

python - 我应该如何将我的 s3 凭证传递给 AWS 上的 Python lambda 函数?

python - 按字母顺序返回字典的输出

python - Django group_by 参数取决于 order_by

python - Django 按最频繁值排序