目录的树状图的django中可以使用第三方包来完善,我们可以使用django-mptt这个库来完善相应的信息
首先需要在模型中添加相应的字段,使用
from mptt.models import MPTTModel, TreeForeignKey
class TagCatalog(MPTTModel):
tag_catalog_name = models.CharField('tag_catalog_name', null=True, blank=True, max_length=255)
tag_catalog_description = models.TextField('tag_catalog_description', null=True, blank=True, max_length=255)
c_tags = models.ManyToManyField(MyCustomTag, blank=True )
parent = TreeForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name='tag_catalog')
class MPTTMeta:
order_insertion_by = ['tag_catalog_name']
def __str__(self):
return self.tag_catalog_name
发布模型之后,可以修改admin的内容
from mptt.admin import MPTTModelAdmin
class TagCatalogAdmin(MPTTModelAdmin):
mptt_level_indent = 20
fields = ['tag_catalog_name', 'tag_catalog_description', 'parent', 'c_tags']
list_display =('tag_catalog_name',)
filter_horizontal = ('c_tags',)
admin.site.register(TagCatalog, TagCatalogAdmin)
在views中添加相应的模型
最后在Template中添加模板就可以了
<ul>
{% recursetree tag_catalogs %}
<li>
{% if node.level == 0 %}
<h4 class="widget-title">{{ node.tag_catalog_name }}</h4>
{% elif node.level == 1 %}
<h6>{{ node.tag_catalog_name }}</h6>
{% else %}
{{ node.tag_catalog_name }}
{% endif %}
{% if not node.is_leaf_node %}
<ul class="children">
{{ children }}
</ul>
{% endif %}
</li>
{% endrecursetree %}