2017-02-05 254 views
0

通過說定製,我不是說使用list_display和類似的東西。如何自定義django管理面板模型列? django

我的定製意義是我想要一個不在模型中的列。

這個想法是,我想創建一個說下載的專欄,並且在模型中沒有名爲download的這樣的屬性。這只是一個我想定製自己的網址,它會顯示在每一行中。

一個簡單的例子會在隨機模型中的管理頁面中出現。 假設這是我的員工模型。 在我的管理頁面,它會顯示員工的名字,並在右側我想創建一個下載網址,我可以導出讓我們說用戶的信息。我準備好了導出代碼並準備好了網址,但我不確定如何在管理頁面中對其進行自定義。

Model Employee 
------------------------------- 
name   | download 
------------------------------- 
Goerge   | download 
Fluffy   | download 
Techy   | download 

任何人都有想法如何做到這一點?

在此先感謝

回答

1

您可以在「的ModelAdmin」子呈現在結果表中自定義內容爲每個條目,就像這個answer創建一個函數。

例如,假設表格中的「下載」文本鏈接到Google搜索(「https://www.google.com.au/search?q=test」)。你可以這樣做:

from django.contrib import admin 

class EmployeeAdmin(admin.ModelAdmin): 
    fields = ('name') 
    list_display = ('name', 'download') 

    def download(self, obj): 
     return '<a href=https://www.google.com.au/search?q="' + obj.name + '">' + obj.name + '</a>' 

    download.allow_tags = True 
1
from django.utils.html import format_html 

class EmployeeAdmin(ModelAdmin): 
    list_display = ('download',) 

    def download(self, obj): 
     return format_html('<a href="/your/path/download/{}/">Download</a>', obj.pk) 
    download.short_description = 'Download Link'