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

如何在Python代码中获取Django模型Choices字段的显示值?

在Python代码中获取Django模型Choices的显示值

当然有办法啦!在Python代码里获取Django模型Choices对应的显示值,其实和模板中的思路一脉相承,而且有几种灵活的用法,我给你详细说明:

1. 通过模型实例获取(最常用的场景)

Django会自动为带choices参数的字段生成一个get_<field_name>_display()方法,你只需要调用这个方法就能拿到对应的显示文本——和模板里的用法本质一致,只是在Python代码里直接调用实例方法即可。

举个例子,假设你的模型定义是这样的:

from django.db import models

class SiteSetting(models.Model):
    NAVBAR_COLOR = ((0, "Dark"), (1, "Light"),)
    navbarcolor = models.IntegerField(choices=NAVBAR_COLOR, default=1)

当你有一个模型实例时,直接调用方法即可:

# 从数据库获取一个实例
setting = SiteSetting.objects.first()
# 获取navbarcolor对应的显示值
display_color = setting.get_navbarcolor_display()
print(display_color)  # 输出 "Light"(因为默认值是1)

2. 没有模型实例时,直接从Choices映射中查找

如果你还没创建实例,或者需要批量处理某个值对应的显示文本,可以把Choices元组转换成字典,通过键值对直接查找:

方法A:直接用定义的Choices常量转字典

# 将NAVBAR_COLOR转换为字典,键是存储值,值是显示文本
navbar_color_map = dict(SiteSetting.NAVBAR_COLOR)

# 根据存储值获取显示文本
print(navbar_color_map[0])  # 输出 "Dark"
print(navbar_color_map[1])  # 输出 "Light"

# 可以用get方法避免KeyError(如果值不在Choices里)
print(navbar_color_map.get(2, "未知颜色"))  # 输出 "未知颜色"

方法B:通过模型字段动态获取Choices(适合字段名是变量的场景)

如果你的字段名是动态生成的,或者不想硬编码Choices常量的名字,可以通过模型的_meta属性获取字段对象,再拿到它的Choices:

# 获取字段对象
field = SiteSetting._meta.get_field("navbarcolor")
# 转换为字典
navbar_color_map = dict(field.choices)

print(navbar_color_map[0])  # 输出 "Dark"

这两种方法都能帮你在没有实例的情况下快速获取显示值,非常适合脚本、批量处理或者表单逻辑中使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 08:37:31