Problém nastane, když se pokusíte vygenerovat pydantické modely před Tortoise ORM je inicializován. Pokud se podíváte na základní pydantika například uvidíte, že všechny pydantic_model_creator
se nazývají po Tortoise.init
.
Zřejmým řešením je vytvořit pydantické modely po inicializaci Tortoise, například takto:
await Tortoise.init(db_url="sqlite://:memory:", modules={"models": ["__main__"]})
await Tortoise.generate_schemas()
Event_Pydantic = pydantic_model_creator(Event)
Nebo pohodlnějším způsobem použijte early model init pomocí Tortoise.init_models()
. Asi takhle:
from tortoise import Tortoise
Tortoise.init_models(["__main__"], "models")
Tournament_Pydantic = pydantic_model_creator(Tournament)
V tomto případě je hlavní myšlenkou rozdělení pydantických a db modelů do různých modulů, aby import prvního nevedl k vytvoření druhého předem. A zajistěte volání Tortoise.init_models()
před vytvořením pydantických modelů.
Podrobnější popis s příklady lze nalézt zde .