Hi!请登陆

如何在python pydantic basemodel中要求预定义的字符串值?

2021-1-31 87 1/31

pydantic中是否有任何内置方法来指定选项?例如,假设我想要一个字符串值,该值必须具有值“ foo”或“ bar”。

我知道我可以使用正则表达式验证来执行此操作,但是由于我将pydantic与FastAPI一起使用,因此用户只会看到所需的输入为字符串,但是当他们输入内容时,它将给出验证错误。pydantic的所有内置验证均显示在api界面中,因此如果出现类似

class Input(BaseModel):
     option: "foo" || "bar"

解决方案


是的,您可以使用一个枚举:

class Choices(Enum):
    foo = 'foo'
    bar = 'bar'

class Input(BaseModel):
     option: Choices

https://pydantic-docs.helpmanual.io/usage/types/#enums-and-choices

或者您可以使用Literal

class Input(BaseModel):
     option: Literal['foo', 'bar']

https://pydantic-docs.helpmanual.io/usage/types/#literal-type

相关推荐