API & Backend
Pydantic v2 Performance Guide: Rust Core, field_validator & model_validator
Unlock 5x-20x validation speedups with Pydantic v2's Rust-powered core, updated validator syntax, and schema serialization.
3 min
Upgrading to Pydantic v2 Syntax
Pydantic v2 replaces legacy `@validator` and `@root_validator` with high-performance `@field_validator` and `@model_validator` decorators.
schema.py
from pydantic import BaseModel, field_validator, model_validator
class UserRegisterSchema(BaseModel):
username: str
password: str
confirm_password: str
@field_validator("username")
@classmethod
def validate_username(cls, v: str) -> str:
if not v.isalnum():
raise ValueError("Username must be alphanumeric")
return v.lower()
@model_validator(mode="after")
def check_passwords_match(self) -> "UserRegisterSchema":
if self.password != self.confirm_password:
raise ValueError("Passwords do not match")
return self