You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django模板中显示models.TextChoices的label?

Django模板中获取枚举类型标签的解决方法

根据Django官方文档,枚举类型可通过.label获取标签,但直接在模板中调用object.model_choice.label无效。以下是具体解决办法:

场景代码示例

class Model(models.Model):
    class ModelChoices(models.TextChoices):
        ENUM = 'VALUE', 'Label'
    model_choice = models.CharField(choices=ModelChoices.choices) 

在模板中,{{ object.model_choice }}会显示值'VALUE',而{{ object.model_choice.label }}无任何输出。


可行解决方案

方法1:使用Django内置方法(推荐)

Django会为带choices参数的字段自动生成get_字段名_display方法,直接在模板中调用即可获取标签:

{{ object.get_model_choice_display }}

这里的model_choice对应你模型中定义的字段名,调用后会返回对应的'Label'文本。

方法2:在模型中新增属性

如果偏好使用枚举类的.label属性,可以在模型中定义一个只读属性:

class Model(models.Model):
    class ModelChoices(models.TextChoices):
        ENUM = 'VALUE', 'Label'
    model_choice = models.CharField(choices=ModelChoices.choices) 

    @property
    def model_choice_label(self):
        return self.ModelChoices(self.model_choice).label

之后在模板中调用该属性:

{{ object.model_choice_label }}

内容的提问来源于stack exchange,提问作者Hills

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 10:11:07