Python Django 2.1链接为DjangoAdmin列表中的字段

Python Django 2.1链接为DjangoAdmin列表中的字段,python,django,django-admin,Python,Django,Django Admin,我已经阅读了这里关于这个问题的所有问题,但不幸的是没有一个对我有用 我的目标是在Django Admin ModelAdmin中将自定义列显示为HTTP链接标记 管理员 但它仍然在逃避这些,并以明文的形式显示出来 设备是根据机器型号设置的设备。1台机器:N个设备关系 根据我在这里读到的内容,它应该可以正常工作,即使在使用format\u html时没有allow\u tags=True 这是不是因为我的内部功能设备中没有format_html而不起作用?如果没有,有人知道如何解决这个问题吗?没关

我已经阅读了这里关于这个问题的所有问题,但不幸的是没有一个对我有用

我的目标是在Django Admin ModelAdmin中将自定义列显示为HTTP链接标记

管理员

但它仍然在逃避这些,并以明文的形式显示出来

设备是根据机器型号设置的设备。1台机器:N个设备关系

根据我在这里读到的内容,它应该可以正常工作,即使在使用format\u html时没有allow\u tags=True


这是不是因为我的内部功能设备中没有format_html而不起作用?如果没有,有人知道如何解决这个问题吗?

没关系,我只是通过改变来解决这个问题

返回带有链接的设备


在Django 2.0中返回带有链接的标记\u安全设备\u ModelAdmin方法中对允许\u标记的支持是:

将删除对ModelAdmin方法上的allow_tags属性的支持

似乎您将转而希望使用:


我在你之前就意识到并回答了,但你是对的,所以我会接受你的回答。
def device_url(dev_id, dev_name):
    html = '/v1/admin/devices/device/{}/change/'.format(dev_id)
    return format_html('<a href="{0}">{1}</a>', html, dev_name)

@admin.register(Machine)
class MachineAdmin(admin.ModelAdmin):
    form = MachineForm
    list_display = ('name', 'location', 'devices', 'last_maintenance_log')
    inlines = [CommentInline, ]

    def devices(self, obj):
        devices_with_links = ', '.join([device_url(d.id, d.name) for d in obj.devices.all()])
        if len(devices_with_links) > 1:
            return devices_with_links
        else:
            return '-'

    devices.allow_tags = True
return mark_safe(devices_with_links)