python – 为什么Django的RelatedManager不会在目标对象上缓存调用查找的对象?
作者:互联网
如果我有以下型号:
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,django-orm,django-related-manager 来源: https://codeday.me/bug/20190704/1377545.html