modelos.py:
class Person(models.Model):
name = models.CharField(max_length=200)
CATEGORY_CHOICES = (
('M', 'Male'),
('F', 'Female'),
)
gender = models.CharField(max_length=200, choices=CATEGORY_CHOICES)
to_be_listed = models.BooleanField(default=True)
description = models.CharField(max_length=20000, blank=True)
views.py:
def index(request):
latest_person_list2 = Person.objects.filter(to_be_listed=True)
return object_list(request, template_name='polls/schol.html',
queryset=latest_person_list, paginate_by=5)
En la plantilla, cuando llamo person.gender
, obtengo 'M'
o en 'F'
lugar de 'Male'
o 'Female'
.
¿Cómo mostrar el valor ( 'Male'
o 'Female'
) en lugar del código ( 'M'
/ 'F'
)?
python
django
django-models
django-templates
Shankze
fuente
fuente
200
. Conmax_lenght=1
es suficiente, hará que su sitio sea más eficiente y se asegurará de que no tenga datos incorrectos. :)Respuestas:
Parece que estabas en el camino correcto,
get_FOO_display()
sin duda es lo que quieres:En las plantillas , no se incluye
()
en el nombre de un método. Haz lo siguiente:fuente
{{ person.get_gender_display() }}
En vistas
En plantilla
Documentación de get_FOO_display ()
fuente
Otros han señalado que lo que necesita es un método get_FOO_display. Estoy usando esto:
que itera sobre todas las opciones que tiene un elemento en particular hasta que encuentra el que coincide con el tipo de elemento
fuente