2012-11-03 32 views
0

我不是隻談論窗體或靜態數據的自定義字段,我在談論添加一個實際上有它自己的代碼的部分。在字段集中有一個新的條目,但它不是引入新的字段,而是引入一些關於用戶活動的小報告。如何將自定義欄目添加到admin/auth/user /(x)頁面?

其實這個問題代表任何模型的更改頁面。 Django文檔告訴你如何覆蓋這個頁面的模板,但是沒有添加一些python代碼還有什麼好處呢?

回答

1

您可以覆蓋默認模板和默認視圖。

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的源代碼可能會覆蓋您的修改或可能引起問題。

+0

謝謝。你爲我節省了很多時間。 –

0

Django管理員在覆蓋模板之外是非常具有可擴展性的。

請確保您查看文檔中的ModelAdmin methods部分。 您可以修改ModelAdmin的幾乎任何行爲。

您還應該查看custom form validationModelForms文檔,因爲附加到其ModelAdmin的模型的自定義表單爲您提供了另一種(更深層次,在大多數情況下)自定義級別。

相關問題