Problemet opstår, når man forsøger at generere pydantiske modeller før Tortoise ORM er initialiseret. Hvis du ser på basic pydantic eksempel vil du se, at alle pydantic_model_creator
kaldes efter Tortoise.init
.
Den oplagte løsning er at skabe pydantiske modeller efter Tortoise-initialisering, som sådan:
await Tortoise.init(db_url="sqlite://:memory:", modules={"models": ["__main__"]})
await Tortoise.generate_schemas()
Event_Pydantic = pydantic_model_creator(Event)
Eller en mere praktisk måde, brug tidlig model init ved hjælp af Tortoise.init_models()
. Sådan:
from tortoise import Tortoise
Tortoise.init_models(["__main__"], "models")
Tournament_Pydantic = pydantic_model_creator(Tournament)
I tilfældet er hovedideen at opdele pydantic- og db-modeller i forskellige moduler, så import af den første ikke fører til oprettelse af den anden før tid. Og sørg for at kalde Tortoise.init_models()
før du opretter pydantiske modeller.
En mere detaljeret beskrivelse med eksempler kan findes her .