在Django 1.11中覆盖或更改管理模板

时间:2017-07-28 09:43:11

标签: django django-templates django-views

我的总体目标是使/admin/my_app/my_model/<id>/change/中的数据无法修改或转到该页面的链接转到仅view而不是change的其他网址。

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

1 个答案:

答案 0 :(得分:1)

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

另一点是,Django Admin应用程序并非仅用于查看数据,而是编辑数据的主要目的。只需快速查看源文件,您就会明白这一点。

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