from datetime import date from typing import Self from pydantic import BaseModel, field_serializer, field_validator,model_validator class StudentRequest(BaseModel): class_id:int |None = None stu_name:str |None = None age:int |None = None gender:str |None = None native_place:str |None = None birthday:date school:str |None = None major:str |None = None degree:str |None = None admission_date:date graduation_date:date @field_validator('age') @classmethod def check_age(cls, v): if v is not None and v < 0: raise ValueError('年龄不能为负数') return v @model_validator(mode='after') def check_admission_graduation(self) -> Self: if self.admission_date and self.graduation_date: if self.admission_date > self.graduation_date: raise ValueError ('入学日期不能晚于毕业日期') return self class StudentResponse(BaseModel): code:int = 200 detail:str = 'ok' stu_name:str age:int gender:str progress:int @field_serializer('progress') def int_to_string(cls,progress:int): d1 ={ 0:'学习中', 1:'求职中', 2:'已就业' } return d1.get(progress,'暂不明确')