2

我有一个关于 Django 中的外键行为的问题。

我在我的模型中定义了一个树层次结构,其中父子关系在子模型中表示为外键。现在,从叶级别开始,我想检索父级、父级的父级等作为我定义的对象。

这可以通过简单地调用 Leaf.objects.all() 并从 Python 代码中正常访问对象来实现。

但麻烦来了。对于每个这样的调用,Django 都会针对适当的外部 ID 进行 SELECT 查询。这显然是非常缓慢和低效的。我想告诉 Django 类似“嘿,只需一次获取包括外键在内的所有数据,只需在数据库端进行连接和所有内容”。这可能吗?

4

1 回答 1

6

只需使用select_related()

Leaf.objects.select_related().all()
于 2013-10-03T15:40:40.080 回答