使用模型管理员在管理员中显示链接

时间:2018-12-13 13:12:22

标签: django django-admin django-admin-filters django-admin-actions

class DirectAdmin(admin.ModelAdmin):
    def order_pdf(obj):
        # return "<a href='{}'>pdf</a>".format(
        url=reverse('orders:admin_order_pdf', args=[obj.id])
        return "http://localhost:8000" + url
    order_pdf.allow_tags = True
    order_pdf.short_description = 'PDF bill'
    list_display=['id','name','price','phone_number',order_pdf]
admin.site.register(Product)
admin.site.register(Category)
admin.site.register(Direct,DirectAdmin)

这是我的admin.py。在我的对象的“管理”部分中,我想显示一个链接,该链接应充当锚点,并在下一个选项卡中重定向到该特定链接。

但是当我运行这段代码时,我可以看到uri。

enter image description here

我想在pdf文件中将该部分作为锚点,以重定向并在另一个标签中打开

有可能吗?

1 个答案:

答案 0 :(得分:0)

您注释掉的代码几乎正确。您需要返回html(例如<a href='{}'>pdf</a>),但是您需要将输出标记为安全,以便它不会在模板中转义。

您可以为此使用format_html

class DirectAdmin(admin.ModelAdmin):
    def order_pdf(obj):
        url=reverse('orders:admin_order_pdf', args=[obj.id])
        return format_html("<a href='{}'>{}</a>", url, "pdf")
    order_pdf.allow_tags = True
    order_pdf.short_description = 'PDF bill'
    list_display=['id','name','price','phone_number',order_pdf]