根据所选父节点显示子节点

发布于 2024-11-07 21:02:26 字数 1386 浏览 0 评论 0原文

嗨,我一直在寻找这个问题的答案,但找不到答案。我只有 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() 

,但它是一个黑客。有人有更好的主意吗?

Hi i've been looking all over and can't find the answer to this. I have only 3 months experience in using python/django so excuse my dummy quesion!
Im using django mptt to display a simple nested set navigation.

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

this works fine - however i would like to show only children of the selected category (based on slug) and not all of them.
Any ideas ???


i finally did it like this:

{% 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 %}          

in views

category = get_object_or_404(Category, slug=slug)
child = category.get_children()
if not child : 
      child = category.get_siblings() 

but it is a hack. has anyone got better idea?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

树深时见影 2024-11-14 21:02:26

您需要发送一些有关您所在节点的信息,然后这是一个简单的 if 语句。

关于如何通用地发送节点信息,Django中有几种方法可以做到这一点,但没有一种方法是完美的。我的首选方法是上下文处理器: http ://docs.djangoproject.com/en/1.3/ref/templates/api/#writing-your-own-context-processors

You need to send down some information about what node you're in, and then it's a simple if statement.

Regarding how to send down the node information universally, there are a couple ways to do this in Django, and none of them are perfect. My preferred method is context processors: http://docs.djangoproject.com/en/1.3/ref/templates/api/#writing-your-own-context-processors

静若繁花 2024-11-14 21:02:26
{% recursetree nodes %}
  <li>
      <a href="/category/{{ node.get_absolute_url }}">{{ node.name }}</a>                           
       {% if node.name == category.name %}
         <ul>
            {{ children }}
         </ul>
       {% endif %}
  <li>
{% endrecursetree %}
{% recursetree nodes %}
  <li>
      <a href="/category/{{ node.get_absolute_url }}">{{ node.name }}</a>                           
       {% if node.name == category.name %}
         <ul>
            {{ children }}
         </ul>
       {% endif %}
  <li>
{% endrecursetree %}
娇妻 2024-11-14 21:02:26

你可以试试这个:

{% 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 %}

You can try this:

{% 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 %}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文