【发布时间】:2020-06-06 13:55:33
【问题描述】:
我有一个名为“Items”的 SQL (Postgres) 表,其架构如下。
id | parent_id | name
parent_id 列是同一个表的 ForeignKey。 (例如项目有父项目,这些项目可以有父项目)
这构成了一个简单的分支层次结构。
目前我查询特定记录并使用for loop 来获取其每个父母/孩子。
这导致执行大量查询。
我想要做的是使用其中一个项目的 id 查询此表,并使用单个查询返回其所有父/子。
我可以通过为孩子使用.select_related(“parent__parent”) 或.prefetch_related(“item_set”) 来完成此操作,但这两种方法都需要事先了解层次结构的深度。
在 Django 中有没有一种方法可以在单个查询中获取所有相关行? 原始 SQL 也很好。
【问题讨论】: