Django - 什么方法可以立即获取外键对象?

Dan*_*ahr 1 python database django foreign-keys

我对Django中的外键行为有疑问.

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

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

但是这里遇到了麻烦.对于每个这样的调用,Django对适当的外部ID进行SELECT查询.这显然非常缓慢且效率低下.我想告诉Django类似"嘿,只需一次取出包括外键在内的所有数据,只需在数据库端进行连接和所有操作".这有点可行吗?

Lud*_*mer 5

只需使用select_related():

Leaf.objects.select_related().all()
Run Code Online (Sandbox Code Playgroud)