# scheme/students.py # 本文件定义学生模块用到的 Pydantic 模型(接口的请求参数 / 响应格式) from typing import Optional,List from datetime import date io from model.classes import Class # 创建学生的请求体模型 class StudentCreate(BaseModel): cid: int = Field(..., description="班级编号") name: str = Field(..., description="姓名") address: str = Field(..., description="籍贯") school: str = Field(..., description="毕业院校") major: str = Field(..., description="专业") start_time: date = Field(..., description="入学时间") end_time: Optional[date] = Field(None, description="毕业时间,未毕业可以不传") education: str = Field(..., description="学历") consultant_id: int = Field(..., description="顾问编号") gender: str = Field(...,max_length=1, description="性别,男/女") age: int = Field(..., description="年龄") # # 更新学生的请求体模型 class StudentUpdate(BaseModel): cid: Optional[int] = None name: Optional[str] = None address: Optional[str] = None # school: Optional[str] = None # major: Optional[str] = None # education: Optional[str] = None # consultant_id: Optional[int] = None # gender: Optional[str] = None # age: Optional[int] = None # 响应模型 class StudentResponse(BaseModel): sid: int cid: int name: str address: str school: str major: str start_time: date end_time: Optional[date] = None education: str consultant_id: int gender: str age: int flag: int class Config: from_attributes = True # 支持 ORM 对象直接转换 class StudentListResponse(BaseModel): total: int items: list[StudentResponse]