Jul 7, 2024
pip install pydanticBaseModel از pydanticfrom pydantic import BaseModel
from datetime import datetime as DT
class Order(BaseModel):
id: int
item_name: str
quantity: int
created_at: DT
delivered_at: Optional[DT] = None
o = Order(id=1, item_name='test', quantity=3, created_at=DT.now())
print(o)
o = Order(id=1, item_name='test', quantity='3', created_at=DT.now())
print(type(o.quantity)) # <class 'int'>
field_validator برای اعمال محدودیتهای فیلد.
from pydantic import FieldValidator
class Order(BaseModel):
id: int
item_name: str
quantity: int
created_at: DT
delivered_at: Optional[DT] = None
@FieldValidator('quantity')
def validate_quantity(cls, value):
if value < 1:
raise ValueError('Quantity must be greater than zero')
return value
class Order(BaseModel):
id: int
item_name: str
quantity: int
created_at: DT
delivered_at: Optional[DT] = None
class Config:
validate_assignment = True
import requests
response = requests.get('API_URL')
data = response.json()
from pydantic import BaseModel
from datetime import datetime as DT
from typing import List
class Event(BaseModel):
title: str
date: DT
notes: str
bunting: bool
class Division(BaseModel):
name: str
events: List[Event]
class BankHolidays(BaseModel):
england_and_wales: Division
scotland: Division
northern_ireland: Division
holidays = BankHolidays(**data)
print(holidays)
class Config:
alias_generator = lambda field_name: field_name.replace('_', '-')
from pydantic import Field
class Division(BaseModel):
name: str = Field(alias='division')
class Event(BaseModel):
title: str
date: DT
notes: str
bunting: bool
@property
def is_past(self) -> bool:
return self.date < DT.now()
برای نکات و ترفندهای بیشتر درباره پایتون، به سری "پایتون عالی است" سر بزنید.
توجه: اطمینان از سازگاری و عملکرد بر اساس آخرین نسخهها و مستندات.