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í .