如何在 Django 管理面板中添加自定义 link/url 字段?

How to add a customized link/url field in Django admin panel?

在 Django admin.py 中,如何将自定义 link/url 字段 download_pdf 添加到管理视图中?

class CustomerAdmin(admin.ModelAdmin):
    list_display = ['first_name', 'last_name', 'full_name', 'download_pdf']

    def full_name(self, obj):
        return obj.first_name + " " + obj.last_name
    
    def download_pdf(self, obj):
        return "<a href=''>PDF</a>"  # this is not working

以上代码无效,download_pdf 字段显示为文本而不是 link。

使用format_html(...)--(Django doc)函数

from django.utils.html import format_html


class CustomerAdmin(admin.ModelAdmin):
    list_display = ['first_name', 'last_name', 'full_name', 'download_pdf']

    def full_name(self, obj):
        return obj.first_name + " " + obj.last_name

    def download_pdf(self, obj):
        <b>return format_html("<a href=''>PDF")</b>

示例:

def download_pdf(self, obj):
    return format_html(f"<a href='/foo/bar/{obj.pk}/download-pdf/'>PDF</a>")