如何在django的模板中使用Choice字段的值?


下面一段代码,

Model:

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')呢?

编程 django template 模板 choice

Tony大本 10 years, 8 months ago

django支持这个功能。 请参考

getFOOdisplay()

链接是:docs.djangoproject.com/en/dev/ref/models/instances/#django.db.models.Model.getFOOdisplay

在模板中,你在使用这个方法的时候不需要带(),即,

{{person.getgenderdisplay}}

应该就可以了。

另外还有个土方法,就是用 if 做判断,然后输出,某些情况也许好用。 ;D

happle answered 10 years, 8 months ago

tsuyako answered 10 years, 6 months ago

Your Answer