如何使用枚举限制 pydantic 的选择

How to limit choices for pydantic using Enum

我得到下一个枚举选项:

class ModeEnum(str, Enum):
""" mode """

    map = "map"
    cluster = "cluster"
    region = "region"

这个枚举用在两个 Pydantic 数据结构中。 在一个数据结构中,我需要所有枚举选项。 在其他数据结构中,我需要排除 region。 如果我为此使用自定义验证并尝试输入一些 other 值,标准验证错误消息会通知,允许的值都是三个。

那么在这种情况下最好的决定是什么?

P.S。 我在 ModeEnum 中使用 map 变量。不好吗?我无法想象它可以覆盖内置 map 对象的情况,但仍然可以吗?

有点hack,但如果你用pre=True标记你的验证器,你应该能够先强制它运行,然后你可以抛出一个自定义错误允许的值。