Files
DoubaoTeam/schemas/student.py
T
2026-09-21 21:39:13 +08:00

41 lines
1.6 KiB
Python

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