django treenode可能是基于树的东西的最佳抽象模型/管理。
django-treenode的Python项目详细描述
django treenode
可能是基于树的东西最好的抽象模型/管理。
功能
- 快速-获取
祖先
,子代
,子代
,父代
,根
,兄弟代
,树
无查询 - 同步-内存中的模型实例将自动更新
- 兼容性-您可以轻松地将treenode添加到现有项目中
- 没有依赖关系
- 易于配置-只需扩展抽象模型/模型管理
- 管理集成-伟大的树可视化:手风琴,面包屑或缩进
要求
- python 2.7、3.4、3.5、3.6、3.7
- Django 1.8、1.9、1.10、1.11、2.0、2.1、2.2
安装
- 运行pip install django treenode
- 将
treenode
添加到设置。已安装的应用程序
- 使您的模型继承自
treenode.models.treenode model
(如下所述) - 使您的模型管理继承自
treenode.admin.treenodemodelmadmin
(如下所述) - 运行
python manage.py makemigrations
和python manage.py migrate
配置
型号.py
使模型类继承自treenode.models.treenode model
:
fromdjango.dbimportmodelsfromtreenode.modelsimportTreeNodeModelclassCategory(TreeNodeModel):# the field used to display the model instance# default value 'pk'treenode_display_field='name'name=models.CharField(max_length=50)classMeta(TreeNodeModel.Meta):verbose_name='Category'verbose_name_plural='Categories'
treenodemodel
抽象类向模型中添加了许多字段(前缀为tn
以防止直接访问)和公共方法。
管理py
使您的模型管理类继承自treenode.admin.treenodemodelmadmin
fromdjango.contribimportadminfromtreenode.adminimportTreeNodeModelAdminfromtreenode.formsimportTreeNodeFormfrom.modelsimportCategoryclassCategoryAdmin(TreeNodeModelAdmin):# set the changelist display mode: 'accordion', 'breadcrumbs' or 'indentation' (default)# when changelist results are filtered by a querystring,# 'breadcrumbs' mode will be used (to preserve data display integrity)treenode_display_mode=TreeNodeModelAdmin.TREENODE_DISPLAY_MODE_ACCORDION# treenode_display_mode = TreeNodeModelAdmin.TREENODE_DISPLAY_MODE_BREADCRUMBS# treenode_display_mode = TreeNodeModelAdmin.TREENODE_DISPLAY_MODE_INDENTATION# use TreeNodeForm to automatically exclude invalid parent choicesform=TreeNodeFormadmin.site.register(Category,CategoryAdmin)
用法
方法/属性
删除节点及其所有子节点:
obj.delete()
删除当前节点类的整棵树
获取包含所有祖先的列表(从根到父): 获取祖先计数
获取祖先查询集
获取面包屑到当前节点(包括): 获取包含所有子项的列表
获取子项计数: 获取子查询集: 获取节点深度(子代的级别): 获取包含所有子代的列表
获取子代计数
获取子查询集
获取表示模型树的n维dict
获取表示模型树的多行字符串
获取第一个子节点
获取节点索引(node.parent.children列表中的索引): 获取最后一个子节点
获取节点级别(从1开始): 获取用于订购的订单值: 获取父节点
设置父节点
获取节点优先级
设置节点优先级
获取当前节点的根节点
获取包含所有根节点的列表
获取根节点查询集
与所有兄弟姐妹一起获取列表
获取兄弟姐妹计数
获取同级查询集
获取表示模型树的n维dict
小精灵AA33
获取表示模型树的多行字符串
啊!
如果当前节点是目标对象的祖先,则返回 如果当前节点是目标对象的子节点,则返回 如果当前节点是目标对象的后代,则返回 如果当前节点是第一个子节点,则返回true
AAAAAAAAA 38
如果当前节点是最后一个子节点,则返回true
啊!
如果当前节点是叶节点(没有子节点),则返回 如果当前节点是目标对象的父节点,则返回true
AAAAAAA 41
如果当前节点是根节点,则返回true
AAAAAAA 42
如果当前节点是目标对象的根节点,则返回 如果当前节点是目标对象的同级节点,则返回true
啊!
手动更新树,在批量更新后有用 在麻省理工学院许可证下发布cls.delete_tree()
obj.get_ancestors()# orobj.ancestors
obj.get_ancestors_count()# orobj.ancestors_count
obj.get_ancestors_queryset()
obj.get_breadcrumbs(attr=None)# orobj.breadcrumbs
obj.get_children()# orobj.children
fromdjango.dbimportmodelsfromtreenode.modelsimportTreeNodeModelclassCategory(TreeNodeModel):# the field used to display the model instance# default value 'pk'treenode_display_field='name'name=models.CharField(max_length=50)classMeta(TreeNodeModel.Meta):verbose_name='Category'verbose_name_plural='Categories'
0
fromdjango.dbimportmodelsfromtreenode.modelsimportTreeNodeModelclassCategory(TreeNodeModel):# the field used to display the model instance# default value 'pk'treenode_display_field='name'name=models.CharField(max_length=50)classMeta(TreeNodeModel.Meta):verbose_name='Category'verbose_name_plural='Categories'
1
fromdjango.dbimportmodelsfromtreenode.modelsimportTreeNodeModelclassCategory(TreeNodeModel):# the field used to display the model instance# default value 'pk'treenode_display_field='name'name=models.CharField(max_length=50)classMeta(TreeNodeModel.Meta):verbose_name='Category'verbose_name_plural='Categories'
2
fromdjango.dbimportmodelsfromtreenode.modelsimportTreeNodeModelclassCategory(TreeNodeModel):# the field used to display the model instance# default value 'pk'treenode_display_field='name'name=models.CharField(max_length=50)classMeta(TreeNodeModel.Meta):verbose_name='Category'verbose_name_plural='Categories'
3
fromdjango.dbimportmodelsfromtreenode.modelsimportTreeNodeModelclassCategory(TreeNodeModel):# the field used to display the model instance# default value 'pk'treenode_display_field='name'name=models.CharField(max_length=50)classMeta(TreeNodeModel.Meta):verbose_name='Category'verbose_name_plural='Categories'
4
fromdjango.dbimportmodelsfromtreenode.modelsimportTreeNodeModelclassCategory(TreeNodeModel):# the field used to display the model instance# default value 'pk'treenode_display_field='name'name=models.CharField(max_length=50)classMeta(TreeNodeModel.Meta):verbose_name='Category'verbose_name_plural='Categories'
5
fromdjango.dbimportmodelsfromtreenode.modelsimportTreeNodeModelclassCategory(TreeNodeModel):# the field used to display the model instance# default value 'pk'treenode_display_field='name'name=models.CharField(max_length=50)classMeta(TreeNodeModel.Meta):verbose_name='Category'verbose_name_plural='Categories'
6
fromdjango.dbimportmodelsfromtreenode.modelsimportTreeNodeModelclassCategory(TreeNodeModel):# the field used to display the model instance# default value 'pk'treenode_display_field='name'name=models.CharField(max_length=50)classMeta(TreeNodeModel.Meta):verbose_name='Category'verbose_name_plural='Categories'
7
fromdjango.dbimportmodelsfromtreenode.modelsimportTreeNodeModelclassCategory(TreeNodeModel):# the field used to display the model instance# default value 'pk'treenode_display_field='name'name=models.CharField(max_length=50)classMeta(TreeNodeModel.Meta):verbose_name='Category'verbose_name_plural='Categories'
8
fromdjango.dbimportmodelsfromtreenode.modelsimportTreeNodeModelclassCategory(TreeNodeModel):# the field used to display the model instance# default value 'pk'treenode_display_field='name'name=models.CharField(max_length=50)classMeta(TreeNodeModel.Meta):verbose_name='Category'verbose_name_plural='Categories'
9
fromdjango.contribimportadminfromtreenode.adminimportTreeNodeModelAdminfromtreenode.formsimportTreeNodeFormfrom.modelsimportCategoryclassCategoryAdmin(TreeNodeModelAdmin):# set the changelist display mode: 'accordion', 'breadcrumbs' or 'indentation' (default)# when changelist results are filtered by a querystring,# 'breadcrumbs' mode will be used (to preserve data display integrity)treenode_display_mode=TreeNodeModelAdmin.TREENODE_DISPLAY_MODE_ACCORDION# treenode_display_mode = TreeNodeModelAdmin.TREENODE_DISPLAY_MODE_BREADCRUMBS# treenode_display_mode = TreeNodeModelAdmin.TREENODE_DISPLAY_MODE_INDENTATION# use TreeNodeForm to automatically exclude invalid parent choicesform=TreeNodeFormadmin.site.register(Category,CategoryAdmin)
0
fromdjango.contribimportadminfromtreenode.adminimportTreeNodeModelAdminfromtreenode.formsimportTreeNodeFormfrom.modelsimportCategoryclassCategoryAdmin(TreeNodeModelAdmin):# set the changelist display mode: 'accordion', 'breadcrumbs' or 'indentation' (default)# when changelist results are filtered by a querystring,# 'breadcrumbs' mode will be used (to preserve data display integrity)treenode_display_mode=TreeNodeModelAdmin.TREENODE_DISPLAY_MODE_ACCORDION# treenode_display_mode = TreeNodeModelAdmin.TREENODE_DISPLAY_MODE_BREADCRUMBS# treenode_display_mode = TreeNodeModelAdmin.TREENODE_DISPLAY_MODE_INDENTATION# use TreeNodeForm to automatically exclude invalid parent choicesform=TreeNodeFormadmin.site.register(Category,CategoryAdmin)
1
fromdjango.contribimportadminfromtreenode.adminimportTreeNodeModelAdminfromtreenode.formsimportTreeNodeFormfrom.modelsimportCategoryclassCategoryAdmin(TreeNodeModelAdmin):# set the changelist display mode: 'accordion', 'breadcrumbs' or 'indentation' (default)# when changelist results are filtered by a querystring,# 'breadcrumbs' mode will be used (to preserve data display integrity)treenode_display_mode=TreeNodeModelAdmin.TREENODE_DISPLAY_MODE_ACCORDION# treenode_display_mode = TreeNodeModelAdmin.TREENODE_DISPLAY_MODE_BREADCRUMBS# treenode_display_mode = TreeNodeModelAdmin.TREENODE_DISPLAY_MODE_INDENTATION# use TreeNodeForm to automatically exclude invalid parent choicesform=TreeNodeFormadmin.site.register(Category,CategoryAdmin)
2
fromdjango.contribimportadminfromtreenode.adminimportTreeNodeModelAdminfromtreenode.formsimportTreeNodeFormfrom.modelsimportCategoryclassCategoryAdmin(TreeNodeModelAdmin):# set the changelist display mode: 'accordion', 'breadcrumbs' or 'indentation' (default)# when changelist results are filtered by a querystring,# 'breadcrumbs' mode will be used (to preserve data display integrity)treenode_display_mode=TreeNodeModelAdmin.TREENODE_DISPLAY_MODE_ACCORDION# treenode_display_mode = TreeNodeModelAdmin.TREENODE_DISPLAY_MODE_BREADCRUMBS# treenode_display_mode = TreeNodeModelAdmin.TREENODE_DISPLAY_MODE_INDENTATION# use TreeNodeForm to automatically exclude invalid parent choicesform=TreeNodeFormadmin.site.register(Category,CategoryAdmin)
3
fromdjango.contribimportadminfromtreenode.adminimportTreeNodeModelAdminfromtreenode.formsimportTreeNodeFormfrom.modelsimportCategoryclassCategoryAdmin(TreeNodeModelAdmin):# set the changelist display mode: 'accordion', 'breadcrumbs' or 'indentation' (default)# when changelist results are filtered by a querystring,# 'breadcrumbs' mode will be used (to preserve data display integrity)treenode_display_mode=TreeNodeModelAdmin.TREENODE_DISPLAY_MODE_ACCORDION# treenode_display_mode = TreeNodeModelAdmin.TREENODE_DISPLAY_MODE_BREADCRUMBS# treenode_display_mode = TreeNodeModelAdmin.TREENODE_DISPLAY_MODE_INDENTATION# use TreeNodeForm to automatically exclude invalid parent choicesform=TreeNodeFormadmin.site.register(Category,CategoryAdmin)
4
fromdjango.contribimportadminfromtreenode.adminimportTreeNodeModelAdminfromtreenode.formsimportTreeNodeFormfrom.modelsimportCategoryclassCategoryAdmin(TreeNodeModelAdmin):# set the changelist display mode: 'accordion', 'breadcrumbs' or 'indentation' (default)# when changelist results are filtered by a querystring,# 'breadcrumbs' mode will be used (to preserve data display integrity)treenode_display_mode=TreeNodeModelAdmin.TREENODE_DISPLAY_MODE_ACCORDION# treenode_display_mode = TreeNodeModelAdmin.TREENODE_DISPLAY_MODE_BREADCRUMBS# treenode_display_mode = TreeNodeModelAdmin.TREENODE_DISPLAY_MODE_INDENTATION# use TreeNodeForm to automatically exclude invalid parent choicesform=TreeNodeFormadmin.site.register(Category,CategoryAdmin)
5
fromdjango.contribimportadminfromtreenode.adminimportTreeNodeModelAdminfromtreenode.formsimportTreeNodeFormfrom.modelsimportCategoryclassCategoryAdmin(TreeNodeModelAdmin):# set the changelist display mode: 'accordion', 'breadcrumbs' or 'indentation' (default)# when changelist results are filtered by a querystring,# 'breadcrumbs' mode will be used (to preserve data display integrity)treenode_display_mode=TreeNodeModelAdmin.TREENODE_DISPLAY_MODE_ACCORDION# treenode_display_mode = TreeNodeModelAdmin.TREENODE_DISPLAY_MODE_BREADCRUMBS# treenode_display_mode = TreeNodeModelAdmin.TREENODE_DISPLAY_MODE_INDENTATION# use TreeNodeForm to automatically exclude invalid parent choicesform=TreeNodeFormadmin.site.register(Category,CategoryAdmin)
6
fromdjango.contribimportadminfromtreenode.adminimportTreeNodeModelAdminfromtreenode.formsimportTreeNodeFormfrom.modelsimportCategoryclassCategoryAdmin(TreeNodeModelAdmin):# set the changelist display mode: 'accordion', 'breadcrumbs' or 'indentation' (default)# when changelist results are filtered by a querystring,# 'breadcrumbs' mode will be used (to preserve data display integrity)treenode_display_mode=TreeNodeModelAdmin.TREENODE_DISPLAY_MODE_ACCORDION# treenode_display_mode = TreeNodeModelAdmin.TREENODE_DISPLAY_MODE_BREADCRUMBS# treenode_display_mode = TreeNodeModelAdmin.TREENODE_DISPLAY_MODE_INDENTATION# use TreeNodeForm to automatically exclude invalid parent choicesform=TreeNodeFormadmin.site.register(Category,CategoryAdmin)
7
fromdjango.contribimportadminfromtreenode.adminimportTreeNodeModelAdminfromtreenode.formsimportTreeNodeFormfrom.modelsimportCategoryclassCategoryAdmin(TreeNodeModelAdmin):# set the changelist display mode: 'accordion', 'breadcrumbs' or 'indentation' (default)# when changelist results are filtered by a querystring,# 'breadcrumbs' mode will be used (to preserve data display integrity)treenode_display_mode=TreeNodeModelAdmin.TREENODE_DISPLAY_MODE_ACCORDION# treenode_display_mode = TreeNodeModelAdmin.TREENODE_DISPLAY_MODE_BREADCRUMBS# treenode_display_mode = TreeNodeModelAdmin.TREENODE_DISPLAY_MODE_INDENTATION# use TreeNodeForm to automatically exclude invalid parent choicesform=TreeNodeFormadmin.site.register(Category,CategoryAdmin)
8
fromdjango.contribimportadminfromtreenode.adminimportTreeNodeModelAdminfromtreenode.formsimportTreeNodeFormfrom.modelsimportCategoryclassCategoryAdmin(TreeNodeModelAdmin):# set the changelist display mode: 'accordion', 'breadcrumbs' or 'indentation' (default)# when changelist results are filtered by a querystring,# 'breadcrumbs' mode will be used (to preserve data display integrity)treenode_display_mode=TreeNodeModelAdmin.TREENODE_DISPLAY_MODE_ACCORDION# treenode_display_mode = TreeNodeModelAdmin.TREENODE_DISPLAY_MODE_BREADCRUMBS# treenode_display_mode = TreeNodeModelAdmin.TREENODE_DISPLAY_MODE_INDENTATION# use TreeNodeForm to automatically exclude invalid parent choicesform=TreeNodeFormadmin.site.register(Category,CategoryAdmin)
9
obj.delete()
0
obj.delete()
1
obj.delete()
2
true
啊!
true
啊!
true
AAAAAAA 37
:true
啊!
true
啊!
许可证
推荐PyPI第三方库