使用django模型创建、持久化和操作可靠树结构的简单方法。

django_trees的Python项目详细描述


django_树

https://travis-ci.org/imtapps/django-trees.svg?branch=master

使用django模型创建、持久化和操作可靠树结构的简单方法。

安装

pip install django-trees

API使用

创建模型

创建模型扩展AbstractNode并添加所需字段。

fromdjango.dbimportmodelsfromdjango_trees.modelsimportAbstractNodeclassFolder(AbstractNode):name=models.CharField(max_length=10)

创建树节点

要创建树节点,除了指定父节点之外,没有什么不同于创建普通django模型。

root=Folder.objects.create(name="Root")documents=Folder.objects.create(name="Documents",parent=root)downloads=Folder.objects.create(name="Downloads",parent=root)projects=Folder.objects.create(name="Projects",parent=documents)

获取节点子体

使用get_descendants方法检索节点的所有后代(包括子代、孙子、曾孙等)。此方法将返回节点对象的平面列表。

root.get_descendants()

获取节点祖先

使用get_ancestors方法检索节点的所有祖先(包括父代、祖父母、曾祖父母等)。此方法将返回节点对象的平面列表。

projects.get_ancestors()

获取节点子节点

要检索当前节点的所有直接子节点,请使用get_children方法。此方法将返回节点对象的平面列表。

projects.get_children()

移动节点

若要将节点移动到树中的其他位置,请使用move方法将新父节点作为参数传递。

projects.move(root)

分叉节点

< >从现有树的分支创建一个单独的树,使用^ {TT7}$方法。节点对象将从上一个树中删除,它及其子对象现在将位于新树中。

projects.bifurcate()

获取ascii树

要获取树结构的ascii表示,请使用get_ascii_tree方法。

projects.get_ascii_tree()

演示

https://cloud.githubusercontent.com/assets/847632/4188298/1d00fe0a-3771-11e4-8900-ccda9fbb72a1.gif

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

推荐PyPI第三方库


热门话题
Synth xml中的java设置JLabel图标   java全屏Flash应用程序测试需要外部戳   评测配置文件Java CPU负载   java如何显示布尔值?   java共享库与微服务?   使用bash脚本重定向java输出(liquibase)   java如何进行结构化日志记录?   属性JSF2的java绑定属性<h:dataTable>   java Android Restlet包装崩溃   java如果在一个事务中我们只在一个数据源上写,是否可以避免2PC或手动处理提交?(J2CA0030E)   java从哪里获得openCV的jar?   java正在尝试更新SQL数据库条目,但收到SQL语法错误。我怎么知道这里出了什么问题?   java如何在Firebase数据库值中添加空格   为什么在java中读取datainputstream时会出现EOF异常?   java STDERR将每个stacktrace行作为错误日志条目写入WildFly服务器。日志   java通过socket编写一个没有'ImageIO'的映像   java为什么JBoss会在出现错误时破坏连接池?   javafxjava如何查找当月的第一次登录   java这个Android项目给了我一个崩溃的机会,我正试图让这个项目有一个来自编辑文本的数字,并在文本视图中得到它两次