如何在二级孩子不存在时只显示一级孩子,否则在django MPTT中显示二级孩子

时间:2016-08-08 10:08:30

标签: django django-mptt

我从django-mptt树得到以下输出:

Group-2    
    Ministry E
        Division G
        Division Z
    Ministry F
        Division I
        Division J

Group-3    
    Ministry P
        Division X
        Division Y
    Ministry Q
    Ministry R
        Division U
        Division V

但我想表现如下:

        Division G
        Division Z

        Division I
        Division J 

        Division X
        Division Y

    Ministry Q

        Division U
        Division V

这意味着级别1仅显示级别2不存在,否则级别2仅显示。 我尝试使用Model.objects.filter(level = 1),但它只提供一个级别而不是两个选择性。我也试过Model.objects.filter(level__gt = 0)它给出了两个级别都不服从条件。

如何才能获得两种水平保持条件?

编辑:

{% block content %}


{% load mptt_tags %}
{% for instance in Genre.objects.all %}
    {% if instance.is_leaf_node %}
        {{ instance }}
    {% endif %}
{% endfor %}

{% endblock %}

查看:

def show_genres(request):
    instances = Genre.objects.filter(children__isnull=True)
    return render(request,
                  'genre/template.html', {'instances': instances})

URLS:

url(r'^genres/$', show_genres, name="genre_list",)

型号:

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

class MPTTMeta:

    order_insertion_by=['name']

1 个答案:

答案 0 :(得分:0)

仅显示叶节点

解决方案#1 - 在模板中:

{% for instance in Model.objects.all %}
    {% if instance.is_leaf_node %}
        {{ instance }}
    {% endif %}
{% endfor %}

解决方案#2 - 在视图中:

instances = Model.objects.filter(children__isnull=True)
return render(request, 'template.html', {'instances': instances})
相关问题