我有几个型号。除了管理员条目之外,没有任何列表视图。因此,手动计算模型实例的URL会有点麻烦。
我想在列表和详细信息管理员视图中显示一个链接,直接将我带到公共视图。我可以做无效的工作创建URL,但我不知道如何让它在管理员中显示。
有什么想法吗?
答案 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>')