全书目录

第二篇:FastAPI 完全指南 —— 软件城市政务大厅宇宙

第七章:字段约束 —— 表单不只是有这个字段,还要填得像样

1 分钟 99 字 第 53 / 962 个阅读单元

真正的政务大厅不会只检查“有没有填”,还会检查:

  • 名字是不是太短
  • 申请天数是不是正数
  • 区域编号是不是符合格式

这就是 Field(...) 的作用。

py
from pydantic import BaseModel, Field

class PermitCreate(BaseModel):
    owner: str = Field(min_length=2, max_length=20, description="申请人姓名")
    zone: str = Field(pattern=r"^[A-Z]-\d{2}$", description="区域编号,例如 A-01")
    days: int = Field(gt=0, le=30, description="申请时长,1 到 30 天")
    note: str | None = Field(default=None, max_length=200)

到了 Pydantic v2,模型导出常用的是:

py
payload = PermitCreate(owner="Ada", zone="A-01", days=7)
print(payload.model_dump())