Django管理的TreeWidget
django-treewidget的Python项目详细描述
提供模型字段treeForeverKey、treeOneField, treemantomanyfield,用于树模型,带有用于django的树小部件。使用 jstree(多亏了vakata)。
用django mptt和django treebeard测试,django 1.11&2.0.2。 与django<;1.11不兼容。
安装
- pip install django-treewidget
- 将'treewidget'放入INSTALLED_APPS
- 对于ajax树更新,添加到url.py的路由,例如 url(r'^treewidget/',include('treewidget.urls'))
用法
只需将任何外键、m2m或one2one tree model字段替换为 提供副本。
定制
字段理解另外两个参数:
- settings:包含可选布尔值的字典 “显示按钮”(显示“展开”、“折叠”和“选定”按钮); “搜索”(用于树内搜索)、“dnd”(拖放支持)和 “排序”(在前端应用树顺序)。默认为{}。
- treeoptions:直接应用于jstree的设置。一定是 json字符串,如果作为字段的参数提供,则为python 字典。默认为treewidget.fields.TREEOPTIONS。请注意 一些小部件设置将覆盖treeoptions以保持工作。
这两个设置都可以在settings.py中作为项目范围提供 TREEWIDGET_SETTINGS和TREEWIDGET_TREEOPTIONS。
可以通过重写 默认格式化程序。只需将分支的父ID设置为“” 格式化程序的render方法中的顶级项。
注意:如果使用预过滤的queryset,则数据不构成 包含最高级别的所有父级的子树,jstree无法呈现 是的。设置中的“filtered”设置为True时 查询集将通过添加不可选择的缺失节点来呈现。
示例
fromdjango.dbimportmodelsfrommptt.modelsimportMPTTModelfromtreewidget.fieldsimportTreeForeignKeyclassMptt(MPTTModel):name=models.CharField(max_length=32)parent=TreeForeignKey('self',blank=True,null=True,on_delete=models.CASCADE)def__str__(self):returnself.name
呈现如下:
屏幕截图