@nurzhannogerbek

Как отобразить в шаблоне рекурсивность древовидной структуру?

Здравствуйте! Помогите пожалуйста разобраться.

Есть две модели данных: Document, DocumentClosure. В БД создаются две таблицы с архитектурой «Closure Table».

ВОПРОС: Как отобразить в шаблоне древовидную структуру на основе этих моделей данных? Нужно ведь создать некую рекурсивность в шаблоне я так полагаю и для этого вроде нужно создать кастомный тег? Можете ли помочь разобраться, не могу все в голове уложить.

models.py:
class Document(models.Model):
    name = models.TextField(verbose_name='Название', blank=True, null=True)

class DocumentClosure(models.Model):
    parent = models.ForeignKey(
        Document,
        on_delete=models.CASCADE,
        related_name="parents",
        related_query_name="parent",
        db_column='parent_id',
        blank=True,
        null=True
    )

    child = models.ForeignKey(
        Document,
        on_delete=models.CASCADE,
        related_name="childs",
        related_query_name="child",
        db_column='child_id',
        blank=True,
        null=True
    )

    level = models.IntegerField(
        verbose_name='Уровень вложенности',
        default=0,
        blank=True,
        null=True
    )


P.S. Знаю, что есть временем проверенное приложение django-mptt, но в этом приложении используется «Nested Sets». Не буду вдаваться во все подробности, но для моих конкретных нужд меня интересует именно архитектура «Closure Table». Поэтому прощу django-mptt не предлагать.
  • Вопрос задан
  • 187 просмотров
Пригласить эксперта
Ответы на вопрос 1
@deliro
nested set — это частный случай mptt. Можно было бы и разобраться. У тебя же тут просто ссылка на родителя.

Да, пиши кастомный тэг, как у mptt. Благословляю.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы