Das Problem tritt auf, wenn man vorher versucht, pydantische Modelle zu generieren Tortoise ORM wird initialisiert. Wenn Sie sich Basic Pydantic Beispiel sehen Sie, dass alle pydantic_model_creator
heißen nach Tortoise.init
.
Die naheliegende Lösung besteht darin, nach der Tortoise-Initialisierung pydantische Modelle zu erstellen, etwa so:
await Tortoise.init(db_url="sqlite://:memory:", modules={"models": ["__main__"]})
await Tortoise.generate_schemas()
Event_Pydantic = pydantic_model_creator(Event)
Oder verwenden Sie auf bequemere Weise early model init mittels Tortoise.init_models()
. So:
from tortoise import Tortoise
Tortoise.init_models(["__main__"], "models")
Tournament_Pydantic = pydantic_model_creator(Tournament)
In diesem Fall besteht die Hauptidee darin, pydantic- und db-Modelle in verschiedene Module aufzuteilen, sodass das Importieren des ersten nicht zur vorzeitigen Erstellung des zweiten führt. Und stellen Sie sicher, dass Tortoise.init_models()
aufgerufen wird bevor Sie pydantische Modelle erstellen.
Eine ausführlichere Beschreibung mit Beispielen finden Sie unter hier .