Können Pydantic-Modelle Basistypen in Unterklassen unterteilen?Python

Python-Programme
Guest
 Können Pydantic-Modelle Basistypen in Unterklassen unterteilen?

Post by Guest »

Ich suche nach einer Möglichkeit, ein Modell aus einem Basistyp (int, str) zu erstellen, anstatt ein BaseModel um einen Basistyp zu erstellen.
Das Ziel wäre die (De-)Serialisierung, ohne eine Verschachtelungsebene hinzuzufügen.
Verschachtelungsbeispiel:

Code: Select all

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"}}
Gewünschtes Verhalten ohne Verschachtelung:

Code: Select all

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"}
Und wenn möglich mit pydantic, teilen Sie mir bitte die erforderliche Mindestversion mit.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post