Skip to main content
 首页 » 编程设计

python之django:这会导致多少查询

2025年05月04日31grandyang

假设我有以下模型:

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')