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