Django es el entorno de desarrollo web para perfeccionistas con límites de tiempo

Representar campos con choices en nuestras plantillas

Cuando usamos un campo con diferentes opciones (choices) en nuestro modelo utilizamos una lista de elementos cada uno con el valor real que se almacenará en la base de datos seguido por la representación legible del dato. Un ejemplo es el siguiente modelo:

ESTILOS_CHOICES = (
   ('soul', 'Soul'),
   ('jazz', 'Jazz'),
   ('hiphop', 'Hip-Hop'),
)

class Artista(models.Model):
   estilo=models.CharField(maxlength=10, choices=ESTILOS_CHOICES)

Suponiendo que tenemos una plantilla que recibe un objeto Artista en la variable {{ artista }} normalmente accedemos al valor de sus campos mediante {{ artista.campo }}. Pero al estar usando choices con {{ artista.estilo }} obtendremos el valor almacenado en la base de datos en vez de su representación legible definida en ESTILOS_CHOICES. ¿Cómo acceder a la forma legible del dato? Para ello tenemos la función get_FOO_display() que nos permite acceder al valor legible de cualquier campo del modelo que utilice choices.Basta con usar {{ artista.get_estilo_display }} en nuestra plantilla para mostrar la representación legible del campo.

La información sobre get_FOO_display() se encuentra en la referencia de modelos.

Publicado por Antonio Melé el Sunday 8 de March de 2009 | Categorías: modelos, plantillas, trucos

Entradas similares

Crear una imagen de nuestros modelos con django-command-extensions

Algo interesante que nos aporta django-command-extensions es poder crear una representación gráfica de nuestros modelos (o por decirlo de otro modo nuestro esquema de base de datos) con tan sólo un comando. Esto es posible gracias a GraphViz y el ...


Templatetag {% if %} con más comparaciones

Este snippet reemplaza la funcionalidad del templatetag {% if %} permitiendo realizar comparaciones con operadores >, <, >=, <=, != además de las comparaciones que permite hacer {% if %} por defecto. Por ejemplo una comparación con el operador mayor-igual-que para mostrar algo si hay más de 5 artículos ...


Métodos para crear perfiles de usuario

En múltiples ocasiones nos gustaría extender el modelo User para que incluyera otros campos y funciones. La manera "oficial" de hacer esto (la mostrada en la documentación de Django) es creando un modelo para el perfil de usuario que incluya ...


Settings accesibles desde las plantillas

Muchas veces deseamos acceder a los settings de nuestro proyecto desde alguna de nuestras plantillas. Lo ideal es crear un context processor que nos permita acceder a ellos desde cualquier plantilla de cualquier aplicación de nuestro proyecto.

Para ello en ...


Modificar la QuerySet de un ModelChoiceField dinámicamente

El campo de formulario ModelChoiceField sirve para permitir la selección de un elemento entre los objetos resultantes de una QuerySet. La QuerySet inicial puede definirse en el propio campo del formulario. Un ejemplo de uso en nuestro forms.py sería ...


Generar miniaturas de imágenes con django-thumbs

Tras ver que la mayoría de los proyectos existentes para generar miniaturas de imágenes aún no funcionan con la API de Storage y que algunos resultan algo complejos para lo que yo quería me puse a desarrollar un campo que ...


0 comentarios:

No hay ningún comentario todavía.

Escribe un comentario: