如何为Django Ninja Schema字符串字段设置最大/最小/固定长度规则?
在Django Ninja Schema中设置字符串字段的长度规则
Django Ninja的Schema基于Pydantic模型,你可以通过两种常用方式为字符串字段配置长度约束:
方式一:使用Pydantic的Annotated + StringConstraints(Pydantic v2标准写法)
先导入所需工具,再通过Annotated给字符串类型添加长度约束:
from pydantic import StringConstraints, Annotated from ninja import Schema class TestSchema(Schema): # 固定长度为6(最小、最大长度都设为6) name1: Annotated[str, StringConstraints(min_length=6, max_length=6)] # 最大长度为6 name2: Annotated[str, StringConstraints(max_length=6)] # 最小长度为6 name3: Annotated[str, StringConstraints(min_length=6)]
方式二:使用Django Ninja的Field参数(更贴合框架写法)
通过Field直接指定长度规则,无需额外导入Pydantic的约束类:
from ninja import Schema, Field class TestSchema(Schema): # 固定长度为6 name1: str = Field(..., min_length=6, max_length=6) # 最大长度为6 name2: str = Field(..., max_length=6) # 最小长度为6 name3: str = Field(..., min_length=6)
说明
- 两种写法效果完全一致,都会在接口接收请求时自动校验字段长度,不符合规则会返回标准化的错误响应。
- 你提供的示例中
str[length=6]这类写法是无效的,需要替换为上述两种标准实现方式。
内容的提问来源于stack exchange,提问作者Evan
相关产品推荐
相关产品推荐

