lunes, 14 de abril de 2008

Cómo usar links en herramienta Admin de Django

Es muy fácil y yo me quebré la cabeza un buen rato cambiando las plantillas y revisando el código de Django.
Si uno necesita poner links en en la herramienta Administración de Django, no funciona así no más pues si uno hace algo como esto:
  def get_link(self):
link = self.sample_url
if link:
return '<a href="http://www.serversample.cl/">click here</a>'
return ''
class Admin:
list_display = (...,'get_model_link')

Django Admin escapa los textos, así que el resultado en el browser es esto:

<a href="http://www.serversample.cl/">click here</a>

Para que Django Admin no escape los textos hay que hacer lo siguiente:
  def get_link(self):
link = self.sample_url
if link:
return '<a href="http://www.serversample.cl/">click here</a>'
return ''
get_link.allow_tags = True

Y agregar el campo al list_display en la clase Admin:
  class Admin:
list_display = (...,'get_model_link')

Con esto no sólo se pueden crear links, sino que se puede agregar cualquier tag que se necesite (scripts, color de texto, formato texto, divs ... etc...)

No hay comentarios: