Problem występuje, gdy próbuje się wygenerować modele pidantyczne przed Zainicjowano ORM żółwia. Jeśli spojrzysz na podstawowy pydantic przykład zobaczysz, że wszystkie pydantic_model_creator
nazywają się po Tortoise.init
.
Oczywistym rozwiązaniem jest tworzenie modeli pydantycznych po inicjalizacji Tortoise, na przykład:
await Tortoise.init(db_url="sqlite://:memory:", modules={"models": ["__main__"]})
await Tortoise.generate_schemas()
Event_Pydantic = pydantic_model_creator(Event)
Lub wygodniej, użyj wczesnego uruchamiania modelu za pomocą Tortoise.init_models()
. Tak:
from tortoise import Tortoise
Tortoise.init_models(["__main__"], "models")
Tournament_Pydantic = pydantic_model_creator(Tournament)
W tym przypadku główną ideą jest podzielenie modeli pydantic i db na różne moduły, tak aby importowanie pierwszego nie prowadziło do stworzenia drugiego z wyprzedzeniem. I upewnij się, że wywołasz Tortoise.init_models()
przed tworzeniem modeli pidantycznych.
Bardziej szczegółowy opis z przykładami można znaleźć tutaj .