Django模板如何获取模型选择字段的文本而非数值?
获取Django Choice字段的显示文本
这问题我碰到过好多次啦,Django的Choice字段确实有这个小细节——数据库里存的是你定义的键值(比如'1'、'2'),但要拿到对应的显示文本,得用它自动生成的专属方法才行!
直接在模板里获取的方法
Django会为每个带choices参数的字段自动生成一个get_<字段名>_display()方法,在模板里调用的时候不用加括号,直接写:
{{ 你的模型实例.get_contract_display }}
举个实际的例子,假设你的模型是这么定义的:
from django.db import models class YourModel(models.Model): CONTRACT_OPTIONS = ( ('1', 'always'), ('2', 'sometimes'), ) contract = models.CharField(max_length=1, choices=CONTRACT_OPTIONS)
当你把YourModel的实例传到模板(比如叫obj),直接用{{ obj.get_contract_display }}就能输出对应的always或者sometimes了。
额外小提示
如果是在视图或者模型方法里需要获取这个文本,就需要加括号调用:
# 视图里 obj = YourModel.objects.get(id=1) contract_text = obj.get_contract_display()
这个方法是Django内置的,不用自己额外写逻辑,既方便又不容易出错~
内容的提问来源于stack exchange,提问作者Ljubisa Livac
相关产品推荐
相关产品推荐

