Ограничить глубину model_dump в pydantic ⇐ Python

Программы на Python
Anonymous
Ограничить глубину model_dump в pydantic

Сообщение Anonymous »

Pydantic преобразует сложную модель в словарь, если вы вызовете model_dump. Например:

Код: Выделить всё

class Level3(BaseModel):
deep_field: str

class Level2(BaseModel):
mid_field: str
level3: Level3

class Level1(BaseModel):
top_field: str
level2: Level2

class DepthLimitedModel(BaseModel):
name: str
level1: Level1

max_mapping_depth: ClassVar[int] = 1

new_model = DepthLimitedModel(name="Test", level1=Level1(top_field="Top", level2=Level2(mid_field="Mid", level3=Level3(deep_field="Deep")))
dumped = new_model.model_dump()
Приведенный выше код выводит всю структуру в словарь. Круто, но нам не нужна вся структура. Мы хотим ограничить глубину дампа на основе нашей переменной max_mapping_length. В данном случае мы установили значение 1, что означает, что мы хотим, чтобы дамп включал DepthLimitedModel, а также Level1, но поле Level2 для Level1 > должен быть просто идентификатором объекта (и рекурсивная сериализация должна закончиться).
Я не могу найти интуитивно понятный способ сделать это, но ограничение глубины рекурсии кажется таким общеизвестно, что решение должно существовать.

Подробнее здесь: https://stackoverflow.com/questions/790 ... n-pydantic

Вернуться в «Python»