2

按照treebeard docs api示例,我使用get_annotated_list(parent=None, max_depth=None)with parent=<my root node>创建了我的树的 annotated_list 。我将它传递给我的模板并使用他们在文档中归因于 Alexey Kinyov 的示例,我能够使用成功显示我的树

{% for item, info in annotated_list %}
    {% if info.open %}
        <ul><li>
    {% else %}
        </li><li>
    {% endif %}

    {{ item }}

    {% for close in info.close %}
        </li></ul>
    {% endfor %}
{% endfor %}

我想要的是能够提供这些嵌套列表下拉功能。借鉴w3schools 上的这个标准示例,我对其进行了修改以使用我的annotated_list模板变量并最终得到以下结果:

<ul id="myUL">
    <li><span class="caret">{{ annotated_list.0.0 }}</span>
        {% for item, info in annotated_list|slice:"1:" %}
            {% if info.open %}
                <ul class="nested"><li>
            {% else %}
                </li><li>{% if item.get_children_count > 0 %}<span class="caret">
                        {% endif %}
            {% endif %}

            {{ item }}
            {% if item.get_children_count > 0 %}</span>
                    {% endif %}

            {% for close in info.close %}
                </li></ul>
            {% endfor %}

        {% endfor %}
    </li>
</ul>

我的代码几乎可以工作,但似乎没有显示最左边节点的子节点,我不知道为什么。

注意:CSS 和 JS 不包括在内,但需要使下拉菜单工作(我只是使用 w3schools 示例中使用的开箱即用的 CSS/JS)

4

1 回答 1

0

最可能的原因是树有问题。运行Model.find_problems()确认。

Model.fix_tree()可以解决大部分常见问题。

请注意,该get_annotated_list_qs()功能根本不起作用。

于 2021-10-07T12:22:10.403 回答