真正的政务大厅不会只检查“有没有填”,还会检查:
- 名字是不是太短
- 申请天数是不是正数
- 区域编号是不是符合格式
这就是 Field(...) 的作用。
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,模型导出常用的是:
payload = PermitCreate(owner="Ada", zone="A-01", days=7)
print(payload.model_dump())