2017-02-05 209 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'