@ForestGumo

Как оптимизировать дерево в Django?

У меня есть модель Menu, в которой есть поле parent, которая через ForeignKey ссылается на себя.

class Menu(models.Model):
    name = models.CharField(max_length=150)
    parent = models.ForeignKey(
        'self', 
        on_delete=models.CASCADE,
        blank=True, 
        null=True,
        related_name='parent_name')
    
    def __str__(self):
        return self.name


Мне нужно вывести всех parent из объекта Menu, а также parent_name. Для этого нужен только 1 запрос к БД. Я уже и select и prefetch и метод Prefetch пробовал. Не понимаю, как это реализовать. help pls
  • Вопрос задан
  • 126 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Exenzi
Python/Django/TS/Vue3
Не знаю, можно ли это в один запрос завернуть, но для эффективной работы с деревьями можно использовать django-mptt.
https://django-mptt.readthedocs.io/en/latest/index.html
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы