Параметр frozen
Параметр frozen применяется к модели
Pydantic и делает её неизменяемой.
После создания экземпляра модели
присваивание новых значений атрибутам
вызывает ошибку ValidationError.
По умолчанию параметр равен False,
то есть модель изменяема.
Синтаксис
class Model(BaseModel):
model_config = ConfigDict(frozen=True)
field: type
Пример
Давайте создадим замороженную модель и попробуем изменить её атрибут:
from fastapi import FastAPI
from pydantic import BaseModel, ConfigDict
app = FastAPI()
class User(BaseModel):
model_config = ConfigDict(frozen=True)
name: str
age: int
@app.get('/user')
def get_user():
user = User(name='abcde', age=25)
user.age = 30
return user
Результат выполнения кода:
pydantic_core._pydantic_core.ValidationError: 1 validation error for User
age
Instance is frozen [type=frozen_instance, input_value=30, input_type=int]
Пример
Давайте создадим замороженную модель и просто вернём её без изменений:
from fastapi import FastAPI
from pydantic import BaseModel, ConfigDict
app = FastAPI()
class User(BaseModel):
model_config = ConfigDict(frozen=True)
name: str
age: int
@app.get('/user')
def get_user():
return User(name='abcde', age=25)
Результат выполнения кода:
{"name": "abcde", "age": 25}
Смотрите также
-
класс
BaseModel,
который является базой для всех моделей Pydantic -
параметр
extra,
который управляет поведением лишних полей -
параметр
strict,
который запрещает приведение типов при валидации -
класс
ConfigDict,
который хранит настройки модели