我已经设置了一个django-treebeard模型,它有子节点,但没有。我现在如何在我的模板中显示这个?这是我到目前为止所做的。
我的模特:
class SiteMapEntry(MP_Node):
name = models.CharField(max_length=100, null=False, blank=False)
url = models.CharField(max_length=1000, null=False, blank=False)
node_order_by = ['name']
class Meta:
verbose_name = "Sitemap Entry"
verbose_name_plural = "Sitemap Entries"
def __unicode__(self):
return ('%s - %s' % (self.name, self.url))
我的观点:
from django.views.generic import ListView
class SiteMap(ListView):
model = SiteMapEntry
template_name = 'sitemaps.html'
我的模板:
{% block content %}
<h1>Sitemap</h1>
<br /><br />
{% for url in object_list %}
<p>{{ url.name }}</p>
<p>{{ url.url }}</p>
{% endfor %}
{% endblock content %}
现在这样做,显然只是在没有任何缩进的情况下列出节点及其子节点。如何在模板中将其列为树?
答案 0 :(得分:1)
您可以使用get_annotated_list
节点方法获取可在模板中迭代的数据结构:
http://django-treebeard.readthedocs.io/en/stable/api.html#treebeard.models.Node.get_annotated_list
还有一个例子可以告诉你如何做到这一点:
{% 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 %}
查看同样返回嵌套数据结构的dump_bulk
方法:
http://django-treebeard.readthedocs.io/en/stable/api.html#treebeard.models.Node.dump_bulk
希望它有用。