Django mptt recursetree с get_cached_trees в шаблоне - PullRequest
0 голосов
/ 18 февраля 2020

В представлении:

context['categories'] =  = models.Category.objects.all().get_cached_trees()

В шаблоне:

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

В результате он отображает только первый уровень набора запросов. Если удалить get_cached_trees, он отрисовывает все дерево. Как сделать все дерево с get_cached_trees?

1 Ответ

0 голосов
/ 19 февраля 2020

На самом деле вам не нужно вызывать get_cached_trees () в этой ситуации, потому что recursetree уже выполняет кеширование за вас.

Из документации:

Iterates over the nodes in the tree, and renders the contained block for each node.
This tag will recursively render children into the template variable {{ children }}.
Only one database query is required (children are cached for the whole tree)
...