Search code examples
pythondjangodjango-mptt

How to show a certain number of levels in django-mptt?


In my Django project I use django-mptt application to create hierarchical tree. Right now next code works well but I want to show only first 4 level of the tree. How to make it correctly? I am confused.

views.py:

context['caregories'] = Category.objects.get(id=5).get_descendants()

html:

{% load mptt_tags %}
<ul>
    {% recursetree caregories %}
        <li>
            {{ node.name }}
            {% if not node.is_leaf_node %}
                <ul class="children">
                    {{ children }}
                </ul>
            {% endif %}
        </li>
    {% endrecursetree %}
</ul>

Solution

  • You can filter the descendants by their level

    obj = Category.objects.get(id=5)
    context['caregories'] = obj.get_descendants().filter(level__lte=obj.level + max_depth)
    

    where max_depth is the depth you require