Использование пользовательского запроса для детей в django-mptt

Я добавил настраиваемое поле для своей модели (статус). Но я хочу использовать собственный запрос для детей:

мой тег шаблона:

def get_top_menu(context):    
    item = Item.objects.all()
    try:
       item = Item.objects.filter(position__position='top')
    except ObjectDoesNotExist:
       item = Item.objects.none()
   return {
      'nodes': item,         
   }

и шаблон:

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

as doc

Как я могу использовать собственный запрос для children?


person TheNone    schedule 24.02.2015    source источник


Ответы (1)


Взгляните на документы по методам экземпляра MPTTModel (в разделе «Модели и менеджеры»). Существует метод get_children(), который создает QuerySet, содержащий непосредственных дочерних элементов экземпляра модели в порядке дерева. Преимущество использования этого метода по сравнению с обратной связью, предоставляемой ORM дочерним элементам экземпляра, заключается в том, что можно избежать запроса к базе данных в случае, когда экземпляр является конечным узлом (у него нет дочерних элементов).

person inejc    schedule 24.02.2015