我的总体目标是使/admin/my_app/my_model/<id>/change/
中的数据无法修改或转到该页面的链接转到仅view
而不是change
的其他网址。
我在弄清楚如何扩展这些模板时遇到了很多麻烦。很多教程和文档我看到了/templates/admin
中更改模板的讨论,但我感觉这已经在1.11中被弃用了。
答案 0 :(得分:1)
不,它没有被弃用。只需将django/contrib/admin/templates/admin/change_list_results.html
(它描述每个模型列表行)复制到您自己的项目templates/admin/
并根据需要进行更改,例如在行末添加带有链接的列。但要注意写一些特定于模型的东西,因为它会传播到你的所有模型。如果您仍然需要它,请将这些东西存储在模型类中。
另一点是,Django Admin应用程序并非仅用于查看数据,而是编辑数据的主要目的。只需快速查看源文件,您就会明白这一点。
您只需更改自定义的ModelAdmin类,并通过覆盖has_add_permission
和has_delete_permission
方法禁止添加和删除,并将所有字段设置为只读,但您仍会看到保存按钮无处不在。如果这不适合您,请在ModelAdmin或AdminSite类中声明自定义视图,并将其添加到管理站点网址。