我正在尋找將自定義操作添加到Django管理更改頁面的方法。我是而不是正在尋找可添加到總覽下拉框中的操作。添加自定義Django管理操作
我的Django應用程序中的一個模型包含有關文檔的信息,並且它們會自動編譯爲前端的PDF文件。我想讓管理員可以直接從更改頁面快速呈現PDF,以便能夠快速檢查結果。
我已經玩過重寫change_form.html/submit_line.html,添加按鈕絕對沒有問題。但我想知道如何以一種乾淨的方式擴展管理模塊,以便它包含我的自定義操作。
我正在尋找將自定義操作添加到Django管理更改頁面的方法。我是而不是正在尋找可添加到總覽下拉框中的操作。添加自定義Django管理操作
我的Django應用程序中的一個模型包含有關文檔的信息,並且它們會自動編譯爲前端的PDF文件。我想讓管理員可以直接從更改頁面快速呈現PDF,以便能夠快速檢查結果。
我已經玩過重寫change_form.html/submit_line.html,添加按鈕絕對沒有問題。但我想知道如何以一種乾淨的方式擴展管理模塊,以便它包含我的自定義操作。
由於自定義管理視圖基本上只是普通視圖,所以沒有太多特色。你應該考慮一個更清潔的整合有幾件事情:
AdminSite
的get_urls()添加URL模式。RequestContext
或Context
的current_app
參數時,呈現模板的子類管理模板。編輯:
找到一個例子在這裏: http://shrenikp.webs.com/apps/blog/show/5211522-add-custom-view-method-for-django-admin-model-
注意的是,如不利用current_app
說法我已經提到過。我認爲你的視圖生成PDF只是返回一個HttpResponse
與適當的內容類型,而不是用Context
呈現響應,所以它不是必需的。總之,current_app
只有在你的自定義視圖使用的管理模板的子類中才有意義,它實際上在某處使用了current_app
。
該示例將網址和視圖封裝在ModelAdmin
中。也可以通過AdminSite
子類來做到這一點,但至少在你的用例中這可能是矯枉過正的。
順便說一下,覆蓋change_form.html
模板爲您的應用程序添加按鈕到標準更改視圖就好了。在管理員中沒有特別的API(不幸)。
謝謝,但我想我只是沒有足夠的經驗來利用你的答案。網絡上有沒有例子? – stschindler 2013-02-11 15:37:02
我已更新我的答案並添加了一個示例鏈接。 – 2013-02-11 16:55:34