# students_schema:请求、响应的模型框架 from pydantic import BaseModel , Field , field_validator from datetime import datetime import enum class SexEnum(enum.Enum): m = '男' f = '女' # 查询 class StudentsQuery(BaseModel): id:int | None = None num:str | None = None name:str | None = None age:int | None = None sex:SexEnum | None = None home_Place:str | None = None college:str | None = None specialty:str | None = None enrollment_time:datetime | None = None graduate_time:datetime | None = None education:str | None = None # 外键字段 class_id:int | None = None adnisor_id:int | None = None # 额外字段 phone:str | None = None class EducationEnum(enum.Enum): zhuanke = '专科' benke = '本科' shuoshi = '硕士' boshi = '博士' # 新建 class StudentsResponse(BaseModel): num:str = Field(..., min_length=1, max_length=50, description='学生编号' ) name:str = Field(..., min_length=1, max_length=50, description='学生姓名' ) age:int = Field(..., gt=0, lt=200, description='学生年龄') sex:SexEnum home_Place:str | None = None college:str | None = None specialty:str | None = None enrollment_time:datetime | None = None graduate_time:datetime | None = None education:EducationEnum # 外键字段 class_id:int = Field(..., gt=0, description='班级ID') adnisor_id:int | None = None # 额外字段 phone:str = Field(...,min_length=11,max_length=11,description='学生手机号') # 更新 class StudentsUpdate(BaseModel): id:int = Field(..., gt=0 , description='学生ID' ) num:str = Field(..., min_length=1, max_length=50, description='学生编号' ) name:str = Field(..., min_length=1, max_length=50, description='学生姓名' ) age:int = Field(..., gt=0, lt=200, description='学生年龄') sex:SexEnum | None = None home_Place:str | None = None college:str | None = None specialty:str | None = None enrollment_time:datetime | None = None graduate_time:datetime | None = None education:str | None = None # 外键字段 class_id:int = Field(..., gt=0, description='班级ID') adnisor_id:int | None = None # 额外字段 phone:str = Field(...,min_length=11,max_length=11,description='学生手机号') # 删除 class StudentsDelete(BaseModel): sid:int | None = None student_name:str | None = None student_phone: str | None = None class_name:str | None = None job_open_time:datetime | None = None offer_issue_time:datetime | None = None company_name:str | None = None salary:int | None = None