Problemet uppstår när man försöker generera pydantiska modeller före Tortoise ORM initieras. Om du tittar på grundläggande pydantik exempel kommer du att se att alla pydantic_model_creator
kallas efter Tortoise.init
.
Den uppenbara lösningen är att skapa pydantiska modeller efter sköldpaddsinitiering, som så:
await Tortoise.init(db_url="sqlite://:memory:", modules={"models": ["__main__"]})
await Tortoise.generate_schemas()
Event_Pydantic = pydantic_model_creator(Event)
Eller ett mer bekvämt sätt, använd tidig modell init med hjälp av Tortoise.init_models()
. Som så:
from tortoise import Tortoise
Tortoise.init_models(["__main__"], "models")
Tournament_Pydantic = pydantic_model_creator(Tournament)
I fallet är huvudidén att dela upp pydantic- och db-modeller i olika moduler, så att import av den första inte leder till skapandet av den andra i förväg. Och se till att anropa Tortoise.init_models()
innan du skapar pydantiska modeller.
En mer detaljerad beskrivning med exempel finns här .