Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django-有什么方法可以立即获取外键对象吗?_Python_Database_Django_Foreign Keys - Fatal编程技术网

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

Python Django-有什么方法可以立即获取外键对象吗?,python,database,django,foreign-keys,Python,Database,Django,Foreign Keys,我有一个关于Django中外键行为的问题 我在模型中定义了一个树层次结构,其中父子关系在子模型中表示为外键。现在,从叶级开始,我想检索父级、父级的父级等,作为我定义的对象 这可以通过调用Leaf.objects.all()并通常从Python代码访问对象来实现 但麻烦来了。对于每个这样的调用,Django都会对相应的外部ID进行SELECT查询。这显然是非常缓慢和低效的。我想告诉Django一些类似于“嘿,一次给我所有的数据,包括外键,只需在数据库端进行连接和所有操作”。这有可能吗?只要使用:

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

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

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

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

只要使用:


@卡提克-没错。我想说明的是,它返回一个查询集,并且可以进一步链接。一个子项只有一个父项(如果不是在顶层的话),尽管一个父项最多可以有n个子项。我使用了与中相同的方法,其中描述了记者与文章的关系。@Danstahr-你完全正确。我在想一个完全不同的案子。我删除了“旁注”-这里没有任何意义。
Leaf.objects.select_related().all()