Получение иерархических данных
У меня есть таблица базы данных,
id | name | parent id |
---|---|---|
1 | A | None |
2 | B | 1 |
3 | C | 2 |
Существует множество родителей (parent id none) с произвольным количеством детей и произвольной глубиной.
Я хочу написать запрос к базе данных Django (рекурсивные запросы к базе данных MySQL - не вариант), чтобы я мог вывести всю вложенную структуру вплоть до листового элемента, например, для заданного id. Какой лучший способ достичь этого?
A
--B
----C
----D
--P
----Q
Единственное решение, которое я смог придумать, это первоначальный запрос к базе данных, как table.Object.filter(Q(id=id) | Q(parent_id=id))
, чтобы получить родителя и его детей. Итерация по дочерним элементам для перехода к методу глубокого первого поиска (DFS) и запрос к базе данных в методе DFS для вложенных дочерних элементов, пока он не дойдет до листового элемента.
Я пытаюсь выяснить, есть ли в Django дополнительные инструменты, которые могли бы каким-то образом получить всю иерархию с минимально возможным количеством запросов (в идеале с одним).