Django:显示select值
模型:
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'而不是'男'或'女'。 如何显示值(“男”或“女”)而不是代码(M / F)?
看起来你是在正确的轨道上 – get_FOO_display()肯定是你想要的:
在模板中,不包含()方法的名称。 请执行下列操作:
{{ person.get_gender_display }}
您可以使用BooleanField而不是CharField,在模型中:
BOOL_CHOICES = ((True, 'Male'), (False, 'Female')) gender = models.BooleanField(choices=BOOL_CHOICES)
我最近已经超越了Django,所以我对Jinja2模板更加熟悉,但是我们继续:
请注意,它被存储在数据库中'M'和'F'
伪:
# Iterate through list of people # Check if male # output span w/ gender
实际:
{% for person in latest_person_list2 %} {% if person.gender == 'M' %} <span>Male</span> {% else %} <span>Female</span> {% endif %} {% endfor %}
对于有更多select的更复杂的东西,可能需要编写一些逻辑来search元组的CATEGORY_CHOICES元组。 到目前为止,有两个性别select,我不认为是这样。
另请参阅: Django模板标签