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

如何从Django模型的枚举选项中获取关联键名?

若存在变量

x = 'Administrative Court (KBD Admin)'

请问使用什么语法可以从以下Django模型的选项中检索到其关联的名称'admin'?
模型代码如下:

class CourtChoices(models.TextChoices):  # 枚举类
    admin = ("admin", _("Administrative Court (KBD Admin)"))
    admiralty = ("admiralty", _("Admiralty Court (King’s Bench Division) (KBD Admlty)"))
    none = ("none", _("none"))
courtname = models.CharField(max_length=100,
                             choices=CourtChoices.choices,
                             default="none",
                             unique=True)
解决方法

Django的TextChoices类自带了方便的枚举操作能力,你可以用以下几种方式实现反向查找:

方法1:遍历枚举成员匹配

直接遍历CourtChoices的所有选项,匹配显示文本后取出对应的名称:

target_key = None
for item in CourtChoices:
    if item.label == x:
        target_key = item.name
        break
# 此时target_key的值就是'admin'

方法2:构建映射字典快速查找

提前构建显示文本到名称的映射字典,后续可以直接通过键值对快速查询:

label_name_map = {item.label: item.name for item in CourtChoices}
target_key = label_name_map.get(x)
# target_key结果为'admin'

方法3:利用内置反向方法

如果枚举的值和名称一致(比如这里admin的值就是"admin"),可以先通过显示文本拿到对应值,再转换为枚举成员获取名称:

target_value = CourtChoices.get_label(x)
target_key = CourtChoices(target_value).name
# 同样得到'admin'

注意:如果显示文本使用了翻译函数_(),要确保变量x是经过翻译后的对应文本,或者直接使用原始字符串进行匹配,避免因翻译上下文导致的匹配失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 22:05:27