Django: экранирование Html в поле администратора Django?


Я хочу иметь гиперссылку в моей панели администратора Django. Но Джанго админ экранирования HTML-кода.

Admin.py

@admin.register(OrderReport)
class OrderReportAdmin(admin.ModelAdmin):
    readonly_fields = ('show_url', )
    list_display = ('__str__', 'show_url', )

    def show_url(self, obj):
        if obj.filepath:
            return "<a href='/reports/"+obj.filepath+"'>link</a>"
        return None

Введите описание изображения здесь

Я посмотрел на этот ответ. Но не похоже на работу. Я думаю, allow_tags был устарел . Какие у меня варианты?

1 2

1 ответ:

from django.utils.html import format_html

def show_url(self, obj):
    if obj.filepath:
        return format_html("<a href='/reports/"+obj.filepath+"'>link</a>")
    return None

Подробнее об этом методе here.

Это можно написать более питонски, конечно:

return format_html('<a href="/reports/{}">link</a>', obj.filepath)