Django:显示选择值

2024-04-26 22:20:52 发布

您现在位置:Python中文网/ 问答频道 /正文

型号.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)

视图。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')?


Tags: tonamepytruemodelsgenderlengthmax
2条回答

For every field that has choices set, the object will have a get_FOO_display() method, where FOO is the name of the field. This method returns the “human-readable” value of the field.

在视图中

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

在模板中

{{ person.get_gender_display }}

Documentation of get_FOO_display()

看起来你走对了方向-^{}绝对是你想要的:

模板中,不能在方法名中包含()。执行以下操作:

{{ person.get_gender_display }}

相关问题 更多 >