Le problème se produit lorsque l'on essaie de générer des modèles pydantic avant Tortoise ORM est initialisé. Si vous regardez pydantic de base exemple, vous verrez que tous les pydantic_model_creator
sont appelés après Tortoise.init
.
La solution évidente est de créer des modèles pydantiques après l'initialisation de Tortoise, comme ceci :
await Tortoise.init(db_url="sqlite://:memory:", modules={"models": ["__main__"]})
await Tortoise.generate_schemas()
Event_Pydantic = pydantic_model_creator(Event)
Ou d'une manière plus pratique, utilisez early model init au moyen de Tortoise.init_models()
. Comme ceci :
from tortoise import Tortoise
Tortoise.init_models(["__main__"], "models")
Tournament_Pydantic = pydantic_model_creator(Tournament)
Dans ce cas, l'idée principale est de diviser les modèles pydantic et db en différents modules, de sorte que l'importation du premier ne conduise pas à la création du second à l'avance. Et assurez-vous d'appeler Tortoise.init_models()
avant de créer des modèles pydantic.
Une description plus détaillée avec des exemples peut être trouvée ici .