from pydantic import BaseModel, Field, EmailStr
class User(BaseModel):
name: str = Field(..., min_length=2)
age: int = Field(..., ge=0, le=120)
email: EmailStr
json_str = '{"name":"Anna","age":25,"email":"anna@example.com"}'
user = User.model_validate_json(json_str)
print(user.model_dump_json())
Pydantic: вложенная модель + валидатор
from pydantic import BaseModel, model_validator
class Address(BaseModel):
city: str
street: str
class User(BaseModel):
name: str
age: int
is_employed: bool
address: Address
@model_validator(mode='after')
def check_age(self):
if self.is_employed and not (18 <= self.age <= 65):
raise ValueError('Возраст 18–65 при is_employed=True')
return self