🔥 Burn Fat Fast. Discover How! 💪

Pydantic: 10 Most Common Usage Patterns Pydantic: 10 наиболе | Python/ django

Pydantic: 10 Most Common Usage Patterns

Pydantic: 10 наиболее распространенных вариантов использования

1. Basic Data Validation
Use Pydantic models to validate incoming data easily.

from pydantic import BaseModel

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

user = User(name='John Doe', age=30)

2. Default Values
Define default values for your model fields.

class User(BaseModel):
name: str
age: int = 18 # Default value

3. Optional Fields
Mark fields as optional using the Optional type.

from typing import Optional

class User(BaseModel):
name: str
age: Optional[int] = None

4. Custom Validators
Create custom validators with the @validator decorator.

from pydantic import validator

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

@validator('age')
def validate_age(cls, value):
if value < 18:
raise ValueError('User must be 18+')
return value

5. Nested Models

Use Pydantic models to validate nested data structures.

class Address(BaseModel):
street: str
city: str

class User(BaseModel):
name: str
age: int
address: Address

6. Lists of Models
Handle lists of a specific model.

from typing import List

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

class UserList(BaseModel):
users: List[User]

7. Union Fields
Use Union to allow a field to be one of several types.

from typing import Union

class User(BaseModel):
identifier: Union[str, int]

8. Value Constraints
Impose constraints on values using Field.

from pydantic import Field

class User(BaseModel):
name: str
age: int = Field(..., gt=0, lt=120) # Greater than 0, less than 120

9. Aliases for Fields

Define aliases for model fields, which can be useful for fields that are Python keywords.

class User(BaseModel):
name: str
class_: str = Field(alias='class')

10. Recursive Models
Make models that can contain themselves.

from typing import Optional

class TreeNode(BaseModel):
value: int
left: Optional['TreeNode'] = None
right: Optional['TreeNode'] = None

TreeNode.update_forward_refs() # Resolve string annotations

pydantic

@pythonl