Files
2025-11-29 18:29:10 +08:00

2.6 KiB

Data Validation Examples

Complete examples for Pydantic v2 validation, database schema alignment, and data quality monitoring.

Examples Overview

User Validation Example

File: user-validation-example.md

Complete user validation workflow with:

  • Pydantic v2 model with field validators
  • Email, username, age validation
  • Cross-field validation (admin age requirement)
  • SQLModel database alignment
  • FastAPI integration
  • Validation error formatting
  • Pytest test suite

Use when: Building user registration, profile management, or authentication.


Order Validation Example

File: order-validation-example.md

Complex order validation with:

  • Nested object validation (order items, shipping address)
  • Currency and pricing validation
  • Inventory quantity checks
  • Multi-tenant validation (tenant_id)
  • Custom validators for business rules
  • Database transaction validation

Use when: Building e-commerce, order management, or invoicing systems.


Nested Validation Example

File: nested-validation.md

Advanced nested validation patterns:

  • Nested Pydantic models
  • List validation with min/max items
  • Discriminated unions for polymorphic data
  • Recursive validation (tree structures)
  • Forward references
  • Validation context passing

Use when: Working with complex JSON structures, API payloads, or hierarchical data.


Quick Reference

Example Complexity Key Patterns
User Basic Field validators, cross-field validation
Order Intermediate Nested objects, business rules, transactions
Nested Advanced Discriminated unions, recursion, context

Common Patterns

Basic Validation

from pydantic import BaseModel, Field, EmailStr

class User(BaseModel):
    email: EmailStr
    age: int = Field(ge=13, le=120)

Field Validator

from pydantic import field_validator

class User(BaseModel):
    username: str

    @field_validator('username')
    @classmethod
    def validate_username(cls, v: str) -> str:
        if len(v) < 3:
            raise ValueError('Username too short')
        return v

Model Validator

from pydantic import model_validator

class User(BaseModel):
    role: str
    age: int

    @model_validator(mode='after')
    def check_admin_age(self):
        if self.role == 'admin' and self.age < 18:
            raise ValueError('Admins must be 18+')
        return self

Return to main agent