在Django 2.2手册第86页中,有以下代码:
from django.db import models
class Person(models.Model):
SHIRT_SIZES = (
('S', 'Small'),
('M', 'Medium'),
('L', 'Large'),
)
name = models.CharField(max_length=60)
shirt_size = models.CharField(max_length=1, choices=SHIRT_SIZES)
然后它解释说我得到了类似于' L'通过使用p.shirt_size和' Large'使用p.get_shirt_size_display()。
但我可以在HTML文件中获得吗?我得到了' L'使用{{p.shirt_size}},但如果我想在HTML文件中打印实际描述,我该怎么做? {{p.get_shirt_size_display()}}不起作用,是吗?哪种方法可以解决这个问题?
答案 0 :(得分:1)
你很亲密。如果字段具有choices=...
参数,则可以使用get_fieldname_display()
函数获取该选项的相应显示。
Django的模板语言调用callables automatically,因此您应该使用:
{{ p.get_shirt_size_display }}
省略括号。
与文档指定的一样,此类“变量”为resolved in Django templates like:
幕后花絮
从技术上讲,当模板系统遇到一个点时,它会尝试 按照以下顺序查找:
- 字典查找
- 属性或方法查找
- 数字索引查找
醇>如果结果值是可调用的,则调用它时不带参数。调用的结果成为模板值。