Как кастомно выводить django-mptt категории без хардкода на уровень вложенности?

Всем привет.

Задача вывести вот в такое дерево категории:
7ea0ba870d2740df8acd77b8ede213db.png

Т.е. 1 и 2 уровни "красивые", потом идет стандартное дерево.

__________

Я во вьюшке сделал обычный граб всего:

all_nodes = Category.objects.all()

Сама модель:

class Category(MPTTModel):
    name = models.CharField(max_length=70)
    parent = TreeForeignKey('self', null=True, blank=True, related_name='children', db_index=True)


А дальше сделал вот такой теймплейт-вывод:

{% for node in all_nodes %}

     {% if node.level == 0 %} 
        
        <p class="title_of_global_category">{{ node.name }}</p> #1 уровень

             {% for item in node.children.all %}

                <p class="sub_category_text">{{ item.name }}</p> №2 уровень

                    {% for child in item.children.all  %}

                        <ul class="subdeep_handler">
                            <li class="subdeep_category_text">{{ child.name }}</li> №3 уровень
                        </ul>

                    {% endfor %}
                  
            {% endfor %}
                             
     {% endif %}

{% endfor %}


т.е. фактически вытягивал с каждого уровня следующие уровни. Проблема в том, что у меня фактически идет хардкод на уровень вложенности. Можно ли как-то сделать, чтобы 3-4-5 итд уровени выводились в дерево самостоятельно?

И как вообще правильно это все нужно делать?
  • Вопрос задан
  • 1070 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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