catalog目录树状图的形成

2019/7/29 posted in  python

目录的树状图的django中可以使用第三方包来完善,我们可以使用django-mptt这个库来完善相应的信息

github路径

首先需要在模型中添加相应的字段,使用

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