如何设置字符串字段的最大/最小/定长规则?

问题描述 投票:0回答:2

我知道 Django ninja 模式使用 Pydantic 模型,如何设置字符串字段的最大/最小/固定长度规则?

  class TestSchema(Schema):
    name1: str[length=6]
    name2: str[maxlength=6]
    name3: str[minlength=6]

pydantic django-ninja
2个回答
0
投票

使用

constr
代替
str
:

from ninja import Schema
from pydantic import constr

class TestSchema(Schema):
    name1: constr(min_length=6, max_length=6)
    name2: constr(max_length=6)
    name3: constr(min_length=6)

0
投票

参考奥利维拉的回答。我在 Pydantic 网站 上搜索了 constr。 以下是注释:

不鼓励使用此函数,而是使用带有 StringConstraints 的 Annotated

此函数将在 Pydantic 3.0 中弃用。

建议方式:


from typing_extensions import Annotated

from pydantic import BaseModel, StringConstraints

class Foo(BaseModel):
    bar: Annotated[
        str,
        StringConstraints(
            strip_whitespace=True, to_upper=True, pattern=r'^[A-Z]+$'
        ),
    ]

对于我的情况:

 name1: Annotated[
        str,
        StringConstraints(
            min_length=6, max_length=6
        ),
    ]

© www.soinside.com 2019 - 2024. All rights reserved.