pydantic models

Model properties

У моделей pydantic есть следующие методы и аттрибуты:

dict()

Возвращает словарь из аттрибутов модели и их значений;

returns a dictionary of the model's fields and values; cf. exporting models

В примере ниже я продемонстрирую .dict() а также сравню его с .json()

json()

Возвращает словарь из аттрибутов модели и их значений в представлении JSON;

returns a JSON string representation dict(); cf. exporting models

Пример для .dict() и .json()

from pydantic import BaseModel class User(BaseModel): id: int name = 'Jane Doe' user = User(id='123') print(user.dict()) print(user.json())

{'id': 123, 'name': 'Jane Doe'}

{"id": 123, "name": "Jane Doe"}

На этом примере разница между .json() и .dict() не слишком очевидна - поменялись кавычки и всё

Создадим чуть более сложный объект. Импортируем Tuple для создания кортежей

from pydantic import BaseModel from typing import Tuple class User(BaseModel): id: int sites = Tuple[str,...] user = User(id='123',sites='heihei.ru','eth1.ru') print(user.dict()) print(user.json())

{'id': 123, 'sites': ('heihei.ru', 'eth1.ru')}

{"id": 123, "sites": ["heihei.ru", "eth1.ru"]}

copy()

Возвращает копию (по умолчанию - поверхностную) модели.

returns a copy (by default, shallow copy) of the model; cf. exporting models

Обратите внимание, что поверхносная (неглубокая) копия будет изменяться если изменился ориганал.

Рассмотрите пример:

from pydantic import BaseModel class User(BaseModel): id: int name = 'Vladimir Vladimirovich' user = User(id='123') abuser = user.copy() print(user.json()) print(abuser.json()) user.id = 456 print(user.json()) print(abuser.json())

{"id": 123, "name": "Vladimir Vladimirovich"}
{"id": 123, "name": "Vladimir Vladimirovich"}
{"id": 456, "name": "Vladimir Vladimirovich"}
{"id": 456, "name": "Vladimir Vladimirovich"}

parse_obj()

a utility for loading any object into a model with error handling if the object is not a dictionary; cf. helper functions

parse_raw()

a utility for loading strings of numerous formats; cf. helper functions

parse_file()

like parse_raw() but for file paths; cf. helper function

from_orm()

loads data into a model from an arbitrary class; cf. ORM mode

schema()

returns a dictionary representing the model as JSON Schema; cf. schema

schema_json()

returns a JSON string representation of schema(); cf. schema

construct()

a class method for creating models without running validation; cf. Creating models without validation

__fields_set__

Set of names of fields which were set when the model instance was initialised

__fields__

a dictionary of the model's fields

__config__

the configuration class for the model, cf. model config

Share in social media: