Files
------/schema/teacher_schema.py

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