Ответ 1
Используйте get_gender_display()
:
return u"%s [%s]" % (self.name, self.get_gender_display())
Обратите внимание: если вы не используете Python 3+, вы должны определять __unicode__
, а не __str__
.
Из документации 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?
Используйте get_gender_display()
:
return u"%s [%s]" % (self.name, self.get_gender_display())
Обратите внимание: если вы не используете Python 3+, вы должны определять __unicode__
, а не __str__
.