Aunque en la documentación del administrador lo dice, a menudo estmos tan acostumbrados a hacer trabajo con campos que nos olvidamos que al `list_display` del admin de Django podemos usar cualquier atributo o método susceptible de ser llamado (entre otras opciones). Esto abre todo un mundo de posibilidades a la hora de presentar información en forma tabular dentro del admin, podemos crear enlaces hacia otras secciones, mostrar imágenes, todo nos pueda ocurre y que preferiblemente tenga algún tipo de vínculo con el modelo. Un ejemplo muy sencillo, supongamos que tenemos un modelo que tiene una imagen asociada, queremos que en el listado nos aparezca esta imagen. Para ello haremos:

def get_foto(self):
    if self.foto:
        return '%S' % self.foto.url
    else:
        return ""
get_foto.allow_tags = True
get_foto.short_description = 'Foto'

y en `admin.py` añadiremos a la configuración del administrador de nuestro modelo

    list_display = ('get_foto', ) #añade aquí los otros campos que quieras

Podemos complicarlo tanto cómo queramos, un ejemplo lo tenemos al Django Snippet de [Admin list Thumbnail](http://www.djangosnippets.org/snippets/239/ "Admin List Thumbnail"), que complica la función para crear las miniaturas de las imágenes que se presentarán y disminuir así el peso de la página. De este ejemplo es importante notar el el uso que se hace de `allow_tags`, si el método tiene esta propiedad Django no escapará el html que le pasemos, dándonos la oportunidad de presentar todo tipo de código html, bajo nuestra responsabilidad, claro.

blog comments powered by Disqus