Buscar este blog

sábado, 6 de julio de 2013

Obtener valor largo del campo choices de models en Django

Podemos encontrarnos con el problema de como obtener la palabra que podamos leer en lugar de lo que guardamos en la base de datos.

El método para sacarlo sería usando get_NOMBRECAMPO_display(). En los siguientes pasos se resume todo:

  1. Hacemos nuestra consulta en la base de datos y la llamamos "consulta".
  2. Obtenemos el valor del campo choice en la forma legible: consulta.get_nombreCampo_display()

Aquí pongo un ejemplo:

models.py


class Tabla(models.Model):
     TIPO_ETAPAS_VIDA = (
              ('B', 'Bebe'),
              ('A', 'Adolescente'),
              ('Ad', 'Adulto'),
              ('V', 'Viejo'),
        )
        etapasVida = models.Charfield(max_length=2, choices=TIPO_ETAPAS_VIDA)

Suponemos que en la base de datos hemos almacenado lo siguiente:

ID     etapasVida
 1             A
 2             V
 3             B

Ahora en nuestra base de datos sólo se almacenará 'B' ó 'A' ó 'Ad' ó 'V' y para obtener el valor de Bebe, Adolescente, Adulto o Viejo al realizar una consulta tenemos que usar lo siguiente:

En views.py podemos sacar el valor largo de TIPO_ETAPAS_VIDA como sigue:

Consulta con varios resultados devueltos:
     obtener_etapas = Tabla.objects.all()

     for etapa in obtener_etapas:
          etapa.get_etapasVida_display()

   Resultado:
           Adolescente
           Viejo
           Bebe

Consulta con un solo valor devuelto
     obtener_etapas = Tabla.objects.get(id=1)

     etapa.get_etapasVida_display()

   Resultado:
           Adolescente

En templates podemos sacarlo igual. Supongo que le hemos pasado una etapa de la vida obtenida por ejemplo así: mi_etapa=Tabla.objects.get(id=1)

archivo.html


mi_etapa.etapasVida_display


Encuentra otras soluciones en el nuevo blog ó descargate themes y módulos en www.softwild.es

Si necesitas ayuda escribe a través del formulario de contacto en la parte derecha.
Nota: Antes de acceder al formulario aparecerá un anuncio, que en 5 segundos podrás cerrar.

No hay comentarios:

Publicar un comentario

Gracias por comentar.

Si has realizado alguna consulta, responderemos lo antes posible. Gracias