gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 11:34:13 26 4
gpt4 key购买 nike

如果我有以下型号:

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com