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)
Na szablonie, kiedy dzwonię person.gender
, dostaję 'M'
lub 'F'
zamiast 'Male'
lub 'Female'
.
Jak wyświetlić wartość ( 'Male'
lub 'Female'
) zamiast kodu ( 'M'
/ 'F'
)?
python
django
django-models
django-templates
Shankze
źródło
źródło
200
. Dziękimax_lenght=1
wystarczy, sprawi, że Twoja strona będzie bardziej wydajna i zapewni, że nie będziesz mieć złych danych. :)Odpowiedzi:
Wygląda na to, że byłeś na dobrej drodze -
get_FOO_display()
to z pewnością to, czego chcesz:W szablonach nie podajesz
()
nazwy metody. Wykonaj następujące czynności:źródło
{{ person.get_gender_display() }}
W widokach
W szablonie
Dokumentacja get_FOO_display ()
źródło
Inni zauważyli, że potrzebujesz metody get_FOO_display. Używam tego:
który iteruje wszystkie opcje, które ma dany element, dopóki nie znajdzie tego, który pasuje do typu elementów
źródło