tutorial sqlmigrate runserver commands django django-admin

sqlmigrate - django tutorial



¿Cómo agrego una columna personalizada con un hipervínculo en la interfaz de administración de django? (2)

Tengo una interfaz de administrador django y en la lista de modelos deseo una columna personalizada que sea un hipervínculo usando uno de los valores de los campos. Básicamente, uno de los campos de los modelos es una url y me gustaría que la columna tenga esa URL en un hipervínculo cliqueable. Este enlace deberá tener una URL adicional antes de que sea una ruta relativa en el campo del modelo.


Usa la utilidad format_html . Esto escapará a cualquier html de los parámetros y marcará la cadena como segura para usar en las plantillas. El allow_tags método allow_tags ha quedado obsoleto en Django 1.9.

from django.utils.html import format_html class MyModelAdmin(admin.ModelAdmin): list_display = [''show_url'', ...] ... def show_url(self, obj): return format_html("<a href=''http://pre.com{0}''>{0}</a>", obj.url)

Ahora sus usuarios administradores están seguros incluso en el caso de:

url == ''<script>eval(...);</script>''

Ver la documentación para más información.


Defina un método en su clase ModelAdmin y establezca su atributo allow_tags en True . Esto permitirá que el método devuelva HTML sin escudar para mostrar en la columna.

A continuación, enumérelo como una entrada en el atributo ModelAdmin.list_display.

Ejemplo:

class YourModelAdmin(admin.ModelAdmin): list_display = (''my_url_field'',) def my_url_field(self, obj): return ''<a href="%s%s">%s</a>'' % (''http://url-to-prepend.com/'', obj.url_field, obj.url_field) my_url_field.allow_tags = True my_url_field.short_description = ''Column description''

Consulte la documentación de ModelAdmin.list_display para obtener más detalles.