models.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)
No modelo, quando ligo person.gender
, recebo 'M'
ou em 'F'
vez de 'Male'
ou 'Female'
.
Como exibir o valor ( 'Male'
ou 'Female'
) em vez do código ( 'M'
/ 'F'
)?
python
django
django-models
django-templates
Shankze
fonte
fonte
200
. Commax_lenght=1
isso, o site será mais eficiente e você garantirá que não terá dados errados. :)Respostas:
Parece que você estava no caminho certo -
get_FOO_display()
é certamente o que você deseja:Nos modelos , você não inclui
()
no nome de um método. Faça o seguinte:fonte
{{ person.get_gender_display() }}
Nas vistas
No modelo
Documentação de get_FOO_display ()
fonte
Outros apontaram que um método get_FOO_display é o que você precisa. Eu estou usando isso:
que itera sobre todas as opções que um item específico tem até encontrar aquele que corresponde ao tipo de item
fonte