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)
Wenn ich auf der Vorlage anrufe person.gender
, erhalte ich 'M'
oder 'F'
anstelle von 'Male'
oder 'Female'
.
Wie zeige ich den Wert ( 'Male'
oder 'Female'
) anstelle des Codes ( 'M'
/ 'F'
) an?
python
django
django-models
django-templates
Shankze
quelle
quelle
200
. Mitmax_lenght=1
ist genug, wird Ihre Website effizienter und Sie werden sicherstellen, dass Sie keine falschen Daten haben. :)Antworten:
Es sieht so aus, als wären Sie auf dem richtigen Weg -
get_FOO_display()
ist mit Sicherheit das, was Sie wollen:In Vorlagen wird
()
der Name einer Methode nicht berücksichtigt. Mach Folgendes:quelle
{{ person.get_gender_display() }}
In Ansichten
In der Vorlage
Dokumentation von get_FOO_display ()
quelle
Andere haben darauf hingewiesen, dass Sie eine get_FOO_display-Methode benötigen. Ich benutze dies:
Dies durchläuft alle Auswahlmöglichkeiten, die ein bestimmtes Element hat, bis es diejenige findet, die dem Elementtyp entspricht
quelle