我是一个完全迷失的新手,试图弄清楚如何动态生成我的硬编码链接列表,不仅是学习Django的菜鸟练习,而且还可以通过管理员编辑数据。 重要的是,它在通过数据库生成时看起来与现在处于硬编码状态时完全相同。
此处的主要内容需要以模型表示:
http://www.drugpolicyreformmovement.com/directory
我认为我首先会创建一个类别标题的“类别”表,然后将具有ForeignKey关系的链接“链接”表格重新分类。我认为在模板中我会使用'ifchanged'模板标签与(嵌套?)for循环一起依次遍历每个标题,显示每个标题的子记录。
这种情况变得复杂的是'研究与发展教育'标题儿童记录有自己的儿童记录。可能,特别是当我将这个代码重用于其他项目时,我需要容纳任意数量的子级别。
我花了两天时间浏览这里的文档和答案,但我仍然没有清楚地了解模型,视图或模板中的内容。
例如,如何遍历模板中的子级别以查看元素是否包含子级?你怎么做这一切,而不是每次观看db一千次?
答案 0 :(得分:6)
您所做的是:使用django-mptt。
这几乎是在数据库中存储节点树并以最小的db访问权限有效地检索节点的规范解决方案。它包含一些有用的模板标记,可以帮助您输出所需的内容。
答案 1 :(得分:1)
我强烈反对使用django-mptt有几个原因。
使用本地Postgres字段ltree要好得多。但是有一些缺点。它只是Postres那里。没有维护django本地库,您必须自己创建Postgres扩展。否则,您将收到错误type "ltree" does not exist
。有一个简单的解决方法:CREATE EXTENSION ltree;
这个django-tree回购似乎有效,但它官方不支持Django 2.0