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