嗨,我一直在寻找,无法找到答案。我只有3个月使用python / django的经验,所以请原谅我的假问题! 我使用django mptt来显示一个简单的嵌套集导航。
<ul class="root">
{% recursetree nodes %}
<li>
{{ node.name }}
{% if not node.is_leaf_node %}
<ul class="children">
{{ children }}
</ul>
{% endif %}
</li>
{% endrecursetree %}
这很好 - 但是我想只显示所选类别的孩子(基于slug)而不是全部。 有任何想法吗 ???
我终于这样做了:
{% recursetree nodes %}
<li>
<a href='/{{ node.get_absolute_url}}'>{{ node.name }}</a>
</li>
{% if not node.is_leaf.node %}
{% for c in child %}
{% if c in node.get_children %}
{% if forloop.first %}
<ul class="children">
{{ children }}
</ul>
{% endif %}
{% endif %}
{% endfor %}
{% endif %}
{% endrecursetree %}
视图中的
category = get_object_or_404(Category, slug=slug)
child = category.get_children()
if not child :
child = category.get_siblings()
但它是一个黑客。谁有更好的主意?
答案 0 :(得分:0)
您需要发送一些有关您所在节点的信息,然后这是一个简单的if
语句。
关于如何普遍发送节点信息,在Django中有几种方法可以做到这一点,并且它们都不是完美的。我首选的方法是上下文处理器:http://docs.djangoproject.com/en/1.3/ref/templates/api/#writing-your-own-context-processors
答案 1 :(得分:0)
{% recursetree nodes %}
<li>
<a href="/category/{{ node.get_absolute_url }}">{{ node.name }}</a>
{% if node.name == category.name %}
<ul>
{{ children }}
</ul>
{% endif %}
<li>
{% endrecursetree %}
答案 2 :(得分:0)
你可以试试这个:
{% recursetree nodes %}
#check if the node is a child node
{% if node.is_child_node %}
<a href="{{ node.get_absolute_url }}" >{{ node.name }}</a>
{% endif %}
#check if a root node is the current category
{% if node.is_root_node and node.name == category.name %}
{{ children }}
{% endif %}
{% endrecursetree %}