在admin中显示模型URL

时间:2009-06-05 15:41:11

标签: django django-admin

我有几个型号。除了管理员条目之外,没有任何列表视图。因此,手动计算模型实例的URL会有点麻烦。

我想在列表和详细信息管理员视图中显示一个链接,直接将我带到公共视图。我可以做无效的工作创建URL,但我不知道如何让它在管理员中显示。

有什么想法吗?

2 个答案:

答案 0 :(得分:13)

如果模型采用get_absolute_url()方法,则会在管理详细信息屏幕的右上方自动显示“在网站上查看”按钮。

对于列表视图,您可以轻松地将方法添加到显示的字段列表中:

class MyAdmin(admin.ModelAdmin):
    list_display=('name', 'anotherfield', 'show_url')

    def show_url(self, instance):
        return '<a href="%s">View on site</a>' % (instance.get_absolute_url())
    show_url.allow_tags = True

答案 1 :(得分:1)

show_url.allow_tags = True对我不起作用。我不得不使用mark_safe

from django.urls import reverse
from django.utils.safestring import mark_safe

class MyAdmin(admin.ModelAdmin):
    list_display=('name', 'detail_url')

    def detail_url(self, instance):
        url = reverse('url_name')    
        return mark_safe(f'<a href="{url} target="_blank" rel="nofollow"">Follow</a>')