【发布时间】:2011-05-18 06:24:31
【问题描述】:
models.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)
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')而不是代码('M'/'F')?
【问题讨论】:
-
Django print choices value 的可能重复项
-
我试过这个方法,在我使用的模板中: {% for person in object_list %} some html {{person.get_gender_display() }} html {% endfor %} 我得到以下错误:异常值:无法解析余数:来自“person.get_gender_display()”的“()”
-
我的错,我不应该在 person.get_gender_display 之后包含 '()'。它现在工作。谢谢。
-
只是一点评论,因为性别只会是 M 或 F(1 个字符长度),因此将字符字段的最大长度设置为
200是没有意义的。使用max_lenght=1就足够了,这将使您的网站更加高效,并且您将确保不会有错误的数据。 :)
标签: python django django-models django-templates