假设我有以下模型:
class Baz(models.Model):
winning = models.CharField(max_length=100)
class Bar(models.Model):
baz = models.ForeignKey(Baz)
class Foo(models.Model):
bar = models.ForeignKey(Bar)
现在我有一个 Foo 的实例,foo。以下行执行了多少个查询?
winning = foo.bar.baz.winning
它是否为每个外键 . 做一个查询,还是 Django 足够聪明,只在这里做一个查询?
请您参考如下方法:
这将需要 3 个查询。
获取 foo、bar 和 baz 的一个。
使用select_related()立即获取它们。
Foo.objects.get(id=1).select_related('bar__baz__winning')
