Могут ли модели Pydantic создавать подклассы базовых типов?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Могут ли модели Pydantic создавать подклассы базовых типов?

Сообщение Anonymous »

Я ищу способ построить модель на основе базового типа (int, str) вместо построения базовой модели на основе базового типа. >
Целью будет (де)сериализация без добавления уровня вложенности.
Пример вложенности:

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

from pydantic import BaseModel, validator

class Foo(BaseModel):
foo: str

@validator('foo')
def must_be_xxx(cls, v):
if v != 'xxx':
raise ValueError('must be xxx')

class Bar(BaseModel):
bar: Foo

x = Bar(bar=Foo(foo='xxx'))
print(x.json())  # {"bar": {"foo": "xxx"}}
Желаемое поведение без вложенности:

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

from pydantic import BaseModel, validator

class FooScalar(BaseModel, str):
# 1) running this code produces the following exception :
#      TypeError: multiple bases have instance lay-out conflict
# 2) What class or __dunder__ methods to add ?
#    What/how to use @validator and with what ?
pass

class Bar(BaseModel):
bar: FooScalar

# desired behaviour and output
y = Bar(bar=FooScalar('xxx'))
print(y.json())  # {"bar": "xxx"}
И если это возможно с помощью pydantic, сообщите мне, какая минимальная необходимая версия.

Подробнее здесь: https://stackoverflow.com/questions/793 ... asic-types
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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