Проблемът възниква, когато се опитате да генерирате пидантични модели преди Tortoise ORM се инициализира. Ако погледнете основен пидантик пример ще видите, че всички pydantic_model_creator
се наричатслед Tortoise.init
.
Очевидното решение е да се създадат пидантични модели след инициализация на Tortoise, така:
await Tortoise.init(db_url="sqlite://:memory:", modules={"models": ["__main__"]})
await Tortoise.generate_schemas()
Event_Pydantic = pydantic_model_creator(Event)
Или по-удобен начин, използвайте инициализиране на ранен модел чрез Tortoise.init_models()
. Ето така:
from tortoise import Tortoise
Tortoise.init_models(["__main__"], "models")
Tournament_Pydantic = pydantic_model_creator(Tournament)
В случая основната идея е да се разделят моделите pydantic и db на различни модули, така че импортирането на първия да не води до създаване на втория преди време. И осигурете извикване на Tortoise.init_models()
преди да създадете пидантични модели.
По-подробно описание с примери можете да намерите тук .