Я прочитал все вопросы здесь относительно этой проблемы, но, к сожалению, ни один из них не работает для меня.
Моя цель - показать пользовательский столбец в Django Admin ModelAdmin
в виде ссылки HTTP (тег <a>
)).
admin.py
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
Но он по-прежнему избегает тех и показывает его в виде открытого текста.
Devices
- device_set
из Machine
модели,1 Machine: N Devices Relations.
Согласно тому, что я прочитал здесь, оно должно работать, даже без allow_tags=True
при использовании format_html
.
Это не работает, потому чтоУ меня нет format_html во внутренней функции devices
?Если нет, у кого-нибудь есть идеи, как решить эту проблему?