from pydantic import BaseModel from datetime import date from pydantic import BaseModel, ConfigDict, Field, model_validator class StudentCreate(BaseModel): student_no: str | None = Field(default=None, min_length=1, max_length=50) student_name: str = Field(min_length=1, max_length=50) class_id: int = Field(gt=0) consultant_id: int | None = Field(default=None, gt=0) native_place: str | None = Field(default=None, max_length=100) graduation_school: str | None = Field(default=None, max_length=100) major: str | None = Field(default=None, max_length=100) enrollment_date: date graduation_date: date | None = None education: str | None = Field(default=None, max_length=50) age: int = Field(ge=0, le=150) gender: str = Field(min_length=1, max_length=10) @model_validator(mode="after") def check_dates(self): # 3. 新增时两个日期都已确定,可以直接校验先后顺序。 if self.graduation_date and self.graduation_date < self.enrollment_date: raise ValueError("毕业日期不能早于入学日期") return self class StudentUpdate(BaseModel): # 全部设为可选,前端只传需要修改的字段 student_no: str | None = None student_name: str | None = None class_id: int | None = None consultant_id: int | None = None native_place: str | None = None graduation_school: str | None = None major: str | None = None enrollment_date: date | None = None graduation_date: date | None = None education: str | None = None age: int | None = None gender: str | None = None