将"View on Site"链接添加到Django admin list_display

Joh*_*ter 4 django django-admin

我正在尝试在Django Admin中添加一个"View on site"链接到我的list_display.

这似乎是一个非常常见的用例,有没有一种快捷方式呢?

sk1*_*k1p 5

你可以像这样写一个可重复使用的mixin(未经测试):

class ViewOnSiteMixin(object):
    def view_on_site(self, obj):
        return mark_safe(u"<a href='%s'>view on site</a>" % obj.get_absolute_url())
    view_on_site.allow_tags = True
    view_on_site.short_description = u"View on site"
Run Code Online (Sandbox Code Playgroud)

像这样使用它:

class SomeAdmin(ViewOnSiteMixin, admin.ModelAdmin):
    list_display = [..., "view_on_site", ...]
Run Code Online (Sandbox Code Playgroud)

(当然需要get_absolute_url在您的模型上定义)