Files
2026-09-21 19:14:15 +08:00

53 lines
2.1 KiB
Python

# 正确
from pydantic import Field
from datetime import datetime
from typing import Optional
from pydantic import BaseModel, field_validator
# --------------------请求体模型-----------------------------
# 用于增加1行数据# 加了软删除标签
class TeacherAdd(BaseModel):
teacher_id:int=Field(...,ge=1,description='教师ID是整数类型')
class_id:int=Field(...,ge=1,description='班级ID是整数类型')
teacher_name:str=Field(...,description='教师姓名')
job_name:str=Field(...,min_length=2,description='主讲老师、班主任、助教')
is_deleted:int=Field(0,ge=0,le=0,description='只能输入0,0代表未删除,1代表已经被软删除')
@field_validator("job_name")
@classmethod
def validate_job_name(cls, v):
"""校验 job_name 必须是 主讲/班主任/助教 之一"""
allowed = ["主讲老师", "班主任", "助教"]
if v not in allowed:
raise ValueError(f"job_name 必须是 {allowed} 之一,当前值: {v}")
return v
# 用于更新数据
class TeacherUpdate(BaseModel):
class_id: Optional[int] = Field(None, ge=1, description='班级ID是整数类型') # ge=1 只对非 None 的值生效
teacher_name: Optional[str] = Field(None, description='教师姓名')
job_name: Optional[str] = Field(None,min_length=2, description='主讲老师、班主任、助教')
@field_validator("job_name")
@classmethod
def validate_job_name(cls, v):
"""校验 job_name 必须是 主讲/班主任/助教 之一"""
allowed = ["主讲老师", "班主任", "助教"]
if v not in allowed:
raise ValueError(f"job_name 必须是 {allowed} 之一,当前值: {v}")
return v
# --------------------- 响应模型 ----------------------------
class TeacherResponse(BaseModel):
teacher_id: int
class_id: int
teacher_name: str
job_name: str
class Config: # 告诉 Pydantic:"可以从任意对象的属性中读取数据,而不只是从字典中读取。"
from_attributes = True # 支持 ORM 对象转换