【问题标题】:Django-mptt filter child from django template来自 django 模板的 Django-mptt 过滤子项
【发布时间】:2013-05-14 04:54:16
【问题描述】:

我使用 django-mptt 来表示我的分层数据。为了从数据库表中获取数据,我使用了模板中的以下代码。

{% load mptt_tags %}
{% recursetree nodes %} 
{{ node.name }}
{% endrecursetree %} 

现在我想按 id 过滤孩子,我需要只有一个直接孩子显示在我的模板中。如何从我的模板中做到这一点?

【问题讨论】:

    标签: django django-templates django-mptt django-filter


    【解决方案1】:

    level 属性和get_previous_sibling 可用于实现此目的:

    {% load mptt_tags %}
    
    {% recursetree nodes %}
    
      {% if node.level == 0 %}
        {# first level #}
        {{ node.name }}
      {% elif not node.get_previous_sibling %}
        {# first child #}
        {{ node.name }}
      {% endif %}
    
      {{ children}}
    {% endrecursetree %}
    

    请注意get_previous_sibling 调用会触发数据库查询。

    【讨论】: