我该如何在Pydantic中设置最大字符串字段长度约束?

27

所以,我有一个带有字符串字段的pydantic模型:

class MyPydanticModel(BaseModel):
    name: Optional[str]

我想为这个字段设置最大长度为10,应该如何操作?

3个回答

34
⚠️ 不建议使用此功能,而是使用带有StringConstraints的Annotated。
此功能将在Pydantic 3.0中被弃用。
原因是constr返回一个类型,与静态分析工具不兼容。
您可以使用constr
from pydantic import BaseModel, constr

class MyPydanticModel(BaseModel):
    name: Optional[constr(max_length=10)]

有没有办法获取max_length的值?例如在验证器中。 - lupodellasleppa

10
你还可以使用Field,它也支持约束条件,例如:

如果字段是可选的:

from pydantic import BaseModel, Field 
from typing import Optional

class MyPydanticModel(BaseModel):
    title: Optional[str] = Field(None, max_length=10)

如果字段是必填的:
from pydantic import BaseModel, Field 
from typing import Optional

class MyPydanticModel(BaseModel):
    title: str = Field(..., max_length=10)

3
这个与mypy协同工作,不像“constr”。 - AngryUbuntuNerd

2
这是文档推荐的内容:
import typing

from pydantic import BaseModel, Annotated, StringConstraints


class MyPydanticModel(BaseModel):
    name: Annotated[str, StringConstraints(min_length=10)]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接