Джанго: Показать значение выбора - PullRequest
199 голосов
/ 01 декабря 2010

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)

На шаблоне, когда я звоню person.gender, Я получаю 'M' или 'F' вместо 'Male' или 'Female'.

Как отобразить значение ('Male' или 'Female') вместо кода ('M' /'F')

Ответы [ 2 ]

434 голосов
/ 01 декабря 2010

Похоже, что вы на правильном пути - get_FOO_display(), безусловно, то, что вы хотите:

В шаблонах , вы не включаете () в названии метода.Сделайте следующее:

{{ person.get_gender_display }}
4 голосов
/ 13 мая 2019

Для каждого поля с установленным выбором у объекта будет метод get_FOO_display (), где FOO - имя поля. Этот метод возвращает «удобочитаемое» значение поля.

В просмотрах

person = Person.objects.filter(to_be_listed=True)
context['gender'] = person.get_gender_display()

В шаблоне

{{ person.get_gender_display }}

Документация get_FOO_display ()

...