2026-09-21 08:41:49 +08:00
|
|
|
# students_schema:请求、响应的模型框架
|
|
|
|
|
|
2026-09-21 12:20:53 +08:00
|
|
|
from pydantic import BaseModel , Field , field_validator
|
2026-09-21 08:41:49 +08:00
|
|
|
from datetime import datetime
|
2026-09-21 23:11:45 +08:00
|
|
|
import enum
|
|
|
|
|
|
|
|
|
|
class SexEnum(enum.Enum):
|
|
|
|
|
m = '男'
|
|
|
|
|
f = '女'
|
|
|
|
|
|
2026-09-21 08:41:49 +08:00
|
|
|
|
|
|
|
|
# 查询
|
|
|
|
|
class StudentsQuery(BaseModel):
|
2026-09-21 23:11:45 +08:00
|
|
|
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 = '博士'
|
2026-09-21 08:41:49 +08:00
|
|
|
|
|
|
|
|
# 新建
|
|
|
|
|
class StudentsResponse(BaseModel):
|
2026-09-21 23:11:45 +08:00
|
|
|
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='学生手机号')
|
2026-09-21 08:41:49 +08:00
|
|
|
|
|
|
|
|
# 更新
|
|
|
|
|
class StudentsUpdate(BaseModel):
|
2026-09-21 23:11:45 +08:00
|
|
|
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='学生手机号')
|
2026-09-21 08:41:49 +08:00
|
|
|
|
|
|
|
|
# 删除
|
|
|
|
|
class StudentsDelete(BaseModel):
|
2026-09-21 12:20:53 +08:00
|
|
|
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
|