35 lines
1.6 KiB
Python
35 lines
1.6 KiB
Python
# 导入Pydantic组件,用于参数校验和响应字段过滤
|
|
from pydantic import BaseModel, Field
|
|
from datetime import date
|
|
from typing import Optional # Optional可选字段: (...)必填字段,没有default可以省略。
|
|
|
|
|
|
#=============== 新增老师:请求体模型 ===============
|
|
#接收前端post新增数据,提前自动校验
|
|
class TeacherCreate(BaseModel):
|
|
t_name : str = Field(...,min_length=1,max_length=20,description="老师姓名") # 老师姓名:必填,字符串,长度1-20.
|
|
phone : str = Field(...,max_length=11,description="手机号") # 老师手机号:必填,字符串,最长11位
|
|
subject : Optional[str] = Field(default="班主任",description="教学科目") # 老师教的科目,可选,不填默认为班主任
|
|
entry_time : Optional[date] = Field(None,description="入职时间") # 老师入职时间,可选,不填为空
|
|
|
|
|
|
#=============== 更新老师:请求体模型 ===============
|
|
# 所有字端都是可选,只更新前段传来的字段,没传的保持不变
|
|
class TeacherUpdate(BaseModel):
|
|
t_name : Optional[str] = None
|
|
phone : Optional[str] = None
|
|
subject : Optional[str] = None
|
|
entry_time : Optional[date] = None
|
|
|
|
|
|
#=============== 响应模型:返回给前端的数据结构 ===============
|
|
# 过滤字段,只返回公开信息,隐藏隐私信息
|
|
class TeacherOut(BaseModel):
|
|
tid: int
|
|
t_name: str
|
|
phone: str
|
|
subject: Optional[str] # 可以为空None,防止报500
|
|
|
|
# SQLAlchemy查出来是orm对象,转化为Pydantic可以识别的对象(字典)
|
|
class Config:
|
|
from_attributes = True |