我不是隻談論窗體或靜態數據的自定義字段,我在談論添加一個實際上有它自己的代碼的部分。在字段集中有一個新的條目,但它不是引入新的字段,而是引入一些關於用戶活動的小報告。如何將自定義欄目添加到admin/auth/user /(x)頁面?
其實這個問題代表任何模型的更改頁面。 Django文檔告訴你如何覆蓋這個頁面的模板,但是沒有添加一些python代碼還有什麼好處呢?
我不是隻談論窗體或靜態數據的自定義字段,我在談論添加一個實際上有它自己的代碼的部分。在字段集中有一個新的條目,但它不是引入新的字段,而是引入一些關於用戶活動的小報告。如何將自定義欄目添加到admin/auth/user /(x)頁面?
其實這個問題代表任何模型的更改頁面。 Django文檔告訴你如何覆蓋這個頁面的模板,但是沒有添加一些python代碼還有什麼好處呢?
您可以覆蓋默認模板和默認視圖。
Django有兩種不同的視圖和用於管理記錄顯示的模板。一個用於創建一個新的,一個用於顯示現有的並編輯它。相關的方法有:
這是如何準備相關的越權訪問量爲例(取from Add/Change View鏈接)
class MyModelAdmin(admin.ModelAdmin):
# A template for a very customized change view:
change_form_template = 'admin/myapp/extras/openstreetmap_change_form.html'
def get_osm_info(self):
# ...
pass
def change_view(self, request, object_id, form_url='', extra_context=None):
extra_context = extra_context or {}
extra_context['osm_data'] = self.get_osm_info()
return super(MyModelAdmin, self).change_view(request, object_id,
form_url, extra_context=extra_context)
你m ust檢查默認的django添加和更改django源代碼中的模板(也可能將其複製爲新模板並在之後進行編輯)以查看如何準備自定義模板。
最後一點,決不編輯Django的模板或vieew代碼直接從源,因爲它們是由許多不同的應用和更新,並使用Django的源代碼可能會覆蓋您的修改或可能引起問題。
Django管理員在覆蓋模板之外是非常具有可擴展性的。
請確保您查看文檔中的ModelAdmin methods部分。 您可以修改ModelAdmin的幾乎任何行爲。
您還應該查看custom form validation和ModelForms文檔,因爲附加到其ModelAdmin的模型的自定義表單爲您提供了另一種(更深層次,在大多數情況下)自定義級別。
謝謝。你爲我節省了很多時間。 –