2017-07-28 83 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。