没有包含的模型
grade
和
subject
领域。
from pydantic import BaseModel, validator
from typing import List, Optional
from datetime import date, time
class ClassTime(BaseModel):
date: Optional[date]
time: Optional[time]
class Subject(BaseModel):
physics: str
chemistry: str
classTime: Optional[ClassTime]
labTime: Optional[str]
class Student(BaseModel):
grade: str
subject: List[Subject]
@validator("grade")
def validate_grade(cls, val):
if val is None:
raise ValueError("grade is null")
return val
@validator("subject", each_item=True)
def validate_subject(cls, val):
if val.classTime:
if not val.classTime.date:
raise ValueError("classTime.date is null")
return val
json_data = {
"grade": "A",
"subject": [
{
"physics": "PHY",
"chemistry": "CHE",
"classTime": {
"date": "2024-03-25",
"time": None
},
"labTime": None
}
]
}
student = Student(**json_data)
print(student)
输出
grade='A' subject=[Subject(physics='PHY', chemistry='CHE', classTime=ClassTime(date=datetime.date(2024, 3, 25), time=None), labTime=None)]