将字段选择显示为模型字符串名称的一部分

Ed.*_*Ed. 17 django

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)
Run Code Online (Sandbox Code Playgroud)

如果我希望__str定义显示为self.gender而不是M或F的全名(男性或女性),该怎么办?

Dan*_*man 32

用途get_gender_display():

return u"%s [%s]" % (self.name, self.get_gender_display())
Run Code Online (Sandbox Code Playgroud)

注意,如果你不使用Python 3+,你应该定义__unicode__而不是__str__.

  • 在模板中,您可以使用:`{{variable.get_fieldname_display}}`HTH (5认同)
  • 在Python 3中,您应该定义`__str __而不是`__unicode__`. (2认同)