2017-07-28 146 views
1

我的总体目标是使/admin/my_app/my_model/<id>/change/中的数据不可编辑,或转到该页面的链接转到另一个仅为view而不是change的URL。覆盖或更改Django中的管理模板1.11

我在计算如何扩展这些模板时遇到了很多麻烦。很多教程和文档我看到在/templates/admin中更改模板的谈话,但我感觉这在1.11中已被弃用。

回答

1

不,不推荐使用。只需将django/contrib/admin/templates/admin/change_list_results.html(它描述模型列表中的每一行)复制到您自己的项目的templates/admin/并根据需要进行更改,例如在行的末尾添加具有链接的列。但要小心编写一些特定于模型的内容,因为它会传播到所有模型中。如果您仍然需要它,请将这些东西存储在模型类中。

另一点是,Django的管理员应用程序并不只是查看数据,它的主要目的是编辑它。只需快速浏览一下源文件,你就会明白这一点。

所有你能做的是改变自定义的ModelAdmin类,并通过覆盖has_add_permissionhas_delete_permission方法禁止将和删除,并设置所有的字段设置为只读,但还是你会看到保存按钮随处可见。如果这不适合您,请在ModelAdmin或AdminSite类中声明自定义视图并将其添加到管理站点URL。