Django管理界面:如何将更多字段显示为链接?

4
默认的Django管理页面会自动将每个表格的第一个标题作为编辑信息的链接(如下所示):

enter image description here

点击 ID 列数据会带您进入一个页面,以编辑所选表格中的字段,在此示例中为 Applicants
有没有一种方法可以更改设置,使得 Surname 成为编辑的链接,而不是 ID
非常感谢。
3个回答

4
使用 list_displays_links 控制在 list_display 中哪些字段应该链接到对象的编辑页面。
示例用法:
class PersonAdmin(admin.ModelAdmin):
    list_display = ('first_name', 'surname', 'location')
    list_display_links = ('first_name', 'surname')

...会使得first_namesurname两者都可以被点击。


2

基于文档:

默认情况下,更改列表页面将链接第一列 - 在list_display中指定的第一个字段 - 到每个项目的更改页面。但是,list_display_links可以更改此设置:

  • 将其设置为None以完全不使用任何链接。

  • 将其设置为字段列表或元组(与list_display格式相同),您希望将其列转换为链接。

class ApplicantsAdmin(admin.ModelAdmin):
    list_display = ('id', 'first_name', 'surname', 'location', 'job') #fields that you want to display
    list_display_links = ('surname',)

你应该从list_display元组的字段中选择list_display_links


1

注意,如果'surname'未分配给list_display而分配给list_display_links,如下所示:

class ApplicantsAdmin(admin.ModelAdmin):
    list_display = (
        'id', 
        'first_name', 
        # 'surname', # Here
        'location', 
        'job'
    )                     # Here
    list_display_links = ('surname',)

你会收到以下错误信息:

ERRORS: <class 'xxx.admin.Applicant'>: (admin.E111) The value of 'list_display_links[2]' refers to 'surname', which is not defined in 'list_display'.

因此,必须将'surname'分配给list_displaylist_display_links,如下所示:
class ApplicantsAdmin(admin.ModelAdmin):
    list_display = (
        'id', 
        'first_name', 
        'surname', # Here
        'location', 
        'job'
    )                     # Here
    list_display_links = ('surname',)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接