Подтвердить что ты не робот

Выбор поля отображения в качестве части имени строки модели

Из документации django, что, если бы я имел

GENDER_CHOICES = (
    ('M', 'Male'),
    ('F', 'Female'),
)

class Person(models.Model):
    name = models.CharField(max_length=20)
    gender = models.CharField(max_length=1, choices=GENDER_CHOICES)

    def __str__(self):
            return "%s [%s]" % (self.name, self.gender)

Что делать, если я хочу, чтобы определение __str отображалось как полное имя (мужчина или женщина) для self.gender вместо M или F?

4b9b3361

Ответ 1

Используйте get_gender_display():

return u"%s [%s]" % (self.name, self.get_gender_display())

Обратите внимание: если вы не используете Python 3+, вы должны определять __unicode__, а не __str__.