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)
Sur le modèle, lorsque j'appelle person.gender
, j'obtiens 'M'
ou 'F'
au lieu de 'Male'
ou 'Female'
.
Comment afficher la valeur ( 'Male'
ou 'Female'
) au lieu du code ( 'M'
/ 'F'
)?
200
. Avecmax_lenght=1
est suffisant, rendra votre site plus efficace et vous garantira que vous n'aurez pas de mauvaises données. :)Réponses:
Il semble que vous étiez sur la bonne voie -
get_FOO_display()
c'est certainement ce que vous voulez:Dans les modèles , vous n'incluez pas
()
le nom d'une méthode. Procédez comme suit:la source
{{ person.get_gender_display() }}
Dans les vues
Dans le modèle
Documentation de get_FOO_display ()
la source
D'autres ont souligné qu'une méthode get_FOO_display est ce dont vous avez besoin. J'utilise ceci:
qui répète tous les choix d'un élément particulier jusqu'à ce qu'il trouve celui qui correspond au type d'élément
la source