如果我有以下型号:
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/