← Back to Tutorials
12. Pydantic Models
from pydantic import BaseModel, Field, EmailStr
from typing import Optional
class Item(BaseModel):
name: str
price: float = Field(..., gt=0, description="Price must be positive")
is_offer: bool = False
tax: Optional[float] = None
class User(BaseModel):
username: str = Field(..., min_length=3, max_length=50)
email: EmailStr
full_name: Optional[str] = None
# Validator
from pydantic import validator
class Order(BaseModel):
items: List[Item]
discount: float = 0.0
@validator("discount")
def check_discount(cls, v):
if v < 0 or v > 100:
raise ValueError("Discount must be 0-100")
return v
✏️ Exercise: Create a Pydantic model for a Product with name, price (>0), category, and an optional description. Add a validator for price.