django treenode可能是基于树的东西的最佳抽象模型/管理。

django-treenode的Python项目详细描述


构建状态coveragecodacy badgerequirements statuspypi versionpypi downloadspy versionslicense

django treenode

可能是基于树的东西最好的抽象模型/管理。

功能

  • 快速-获取祖先子代子代父代兄弟代无查询
  • 同步-内存中的模型实例将自动更新
  • 兼容性-您可以轻松地将treenode添加到现有项目中
  • 没有依赖关系
  • 易于配置-只需扩展抽象模型/模型管理
  • 管理集成-伟大的树可视化:手风琴面包屑缩进
<表><广告>缩进(默认) 面包屑 手风琴 < /广告><正文>treenode admin display mode indentationtreenode管理dis播放模式面包屑treenode admin display mode according

要求

  • 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 makemigrationspython 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()

删除当前节点类的整棵树

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

获取表示模型树的n维dict

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

获取节点索引(node.parent.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'
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

获取节点级别(从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)
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

获取表示模型树的n维dict 小精灵AA33

获取表示模型树的多行字符串 啊!

如果当前节点是目标对象的祖先,则返回true 啊!

如果当前节点是目标对象的子节点,则返回true 啊!

如果当前节点是目标对象的后代,则返回true AAAAAAA 37

如果当前节点是第一个子节点,则返回true AAAAAAAAA 38

如果当前节点是最后一个子节点,则返回true 啊!

如果当前节点是叶节点(没有子节点),则返回true 啊!

如果当前节点是目标对象的父节点,则返回true AAAAAAA 41

如果当前节点是根节点,则返回true AAAAAAA 42

如果当前节点是目标对象的根节点,则返回true 啊!

如果当前节点是目标对象的同级节点,则返回true 啊!

手动更新树,在批量更新后有用

啊!45!

许可证

在麻省理工学院许可证下发布

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
实现接口方法时不允许java@Override   使用BuffereImage加载映像时java高ram使用率   java For循环混乱,为什么不是循环?   java Android网格视图字符串对齐问题   java如何将方法与比较类型的附加功能进行比较?   在Java Swing中放置JSepator后的间隙大小   java如何避免并发访问我的网站中的支付链接   java如何从现有的Unix服务器连接到FTP服务器?   Spring中的java用户相关bean定义   带有scribesjava库的wordpress Woocommerce REST API返回消费者密钥参数缺失错误消息   java我可以自动检测特定设备连接的串行端口吗?   Javafx棋盘游戏   java使用JTextPane显示HTML,支持SVG吗?   SpringBoot如何在java中将映射转换为实体对象?   如何使用java代码对xls文件进行密码保护   Java JPA(EclipseLink)如何在持久化实际实体之前接收下一个生成的值?   Javaservlet启动外部进程