sql >> Base de Datos >  >> RDS >> PostgreSQL

Tortoise ORM para Python sin relaciones de devolución de entidades (Pyndantic, FastAPI)

El problema ocurre cuando uno intenta generar modelos pydantic antes Se inicializa el ORM de tortuga. Si observa pydantic básico ejemplo, verá que todos los pydantic_model_creator se llaman después Tortoise.init .

La solución obvia es crear modelos pydantic después de la inicialización de Tortoise, así:


await Tortoise.init(db_url="sqlite://:memory:", modules={"models": ["__main__"]})
await Tortoise.generate_schemas()

Event_Pydantic = pydantic_model_creator(Event)

O una forma más conveniente, use iniciar modelo temprano mediante Tortoise.init_models() . Así:


from tortoise import Tortoise

Tortoise.init_models(["__main__"], "models")
Tournament_Pydantic = pydantic_model_creator(Tournament)

En el caso, la idea principal es dividir los modelos pydantic y db en diferentes módulos, de modo que la importación del primero no conduzca a la creación del segundo antes de tiempo. Y asegúrese de llamar a Tortoise.init_models() antes de crear modelos pydantic.

Se puede encontrar una descripción más detallada con ejemplos aquí .