# 导入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