为什么Python Django框架中没有内置树视图? 当一个类与自身有1:n的关系时,是否有一种简单的方法可视化模型?
我知道一些花哨的谷歌代码项目可以实现这一目标,但我认为Django社区必须有一些常识来处理这种常见情况。有什么想法吗?
答案 0 :(得分:2)
核心开发人员非常反对向Django添加额外的东西,除非有明确的通用要求 - 特别是如果有完美的第三方项目提供此功能。
树视图绝对是这种情况。它与每个人都想做的事情相差甚远,至少有三个提供树的项目,包括在视图和管理员中构建树的表示的相关工具。
我建议你调查一下 - 我最喜欢的是django-mptt。
答案 1 :(得分:1)
另一种选择是证明Django的概念应用 - django-admirarchy。它逐级呈现层次结构(如Norton Commander和Co)。
答案 2 :(得分:1)
您可以使用 django-mptt-admin
django-mptt 应用程序带有一个简单的模型管理 mixin,允许您创建树结构并用缩进列出它。要重新排序树,您需要自己创建此功能或使用第三方解决方案。目前,有两个应用程序可以帮助您为分层模型创建可拖动的管理界面。其中之一是 django-mptt-admin。让我们来看看这个食谱。
首先,我们需要通过执行以下步骤安装 django-mptt-admin 应用程序:
(myproject_env)$ pip install django-mptt-admin
然后,把它放在设置中的INSTALLED_APPS中,如下:
# conf/base.py or settings.py
INSTALLED_APPS = (
# ...
"django_mptt_admin"
)
答案 3 :(得分:0)
退房:
tree structure of parent child relation in django templates
http://code.google.com/p/django-treeview/
另一种方法是在JavaScript中实现您的树。 Django和JavaScript很好玩,所以可以正常工作。有很多JavaScript树,只需要谷歌
答案 4 :(得分:0)
django-mptt是一个非常不错的Django应用程序,可轻松管理,排序和呈现模板中的树数据。它解决了我要制作精简CMS的问题,并且需要管理菜单和类别。与其他项目相比,它真的很容易安装并且文档齐全。这是一个旧项目,但仍然可以在最新的Django版本上完美运行。在撰写本文时,我已经在Python 3.8的Django 3.0.7上使用和测试了它