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:
- Hacemos nuestra consulta en la base de datos y la llamamos "consulta".
- 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.