具有显式opt-in且不可配置的树查询
django-tree-queries的Python项目详细描述
使用邻接列表和递归公共查询django模型树 表格表达式。支持PostgreSQL、sqlite3(3.8.3或更高版本)和 Mariadb(10.2.2或更高版本),也可能是MySQL8.0,但我发现没有简单的方法 来测试它。
支持django 1.8、1.11或更高版本、python 2.7和3.4或更高版本。见 travis ci构建了更多细节。
功能和限制
- 仅支持整数主键。
- 允许指定同级之间的顺序。
- 使用正确的深度定义,其中根节点的深度为 零。
- 此时父外键必须命名为"parent"(但是 你为什么要用不同的名字命名呢?)
- 公共表表达式添加的字段始终是 tree_depth、tree_path和tree_ordering。名字不能 被改变。tree_depth是一个整数,tree_path是 主键和tree_ordering用于 在其兄弟节点中对节点排序
- 除了添加上面提到的字段之外,包只添加 用于筛选祖先和后代的QuerySet方法。其他 功能可能很有用,但不会仅仅添加到包中 因为这是可能的。
- 代码少,与其他树相比相对简单 Django的管理解决方案。没有多余的值,所以 在树中引入一个循环来结束损坏的数据 结构(使其成为图形)TreeNode抽象模型类 有一些保护措施
用法
- 使用pip安装django-tree-queries。
- 扩展tree_queries.models.TreeNode或构建自己的queryset 和/或使用tree_queries.query.TreeQuerySet的管理器这个 TreeNode抽象模型已包含parent外键 为了您的方便,还使用模型验证来防止 循环
- 如果需要 附加字段分别是CTE
- 在文档更完整之前,我必须让您参考 test suite 其他说明和使用示例。