Il problema si verifica quando si tenta di generare modelli pidanti prima L'ORM tartaruga è inizializzato. Se guardi a pydantic di base esempio vedrai che tutto pydantic_model_creator
sono chiamati dopo Tortoise.init
.
La soluzione ovvia è creare modelli pydantic dopo l'inizializzazione di Tortoise, in questo modo:
await Tortoise.init(db_url="sqlite://:memory:", modules={"models": ["__main__"]})
await Tortoise.generate_schemas()
Event_Pydantic = pydantic_model_creator(Event)
Oppure, in un modo più conveniente, usa inizializzazione del modello iniziale tramite Tortoise.init_models()
. Così:
from tortoise import Tortoise
Tortoise.init_models(["__main__"], "models")
Tournament_Pydantic = pydantic_model_creator(Tournament)
Nel caso, l'idea principale è quella di dividere i modelli pydantic e db in moduli diversi, in modo che l'importazione del primo non porti alla creazione del secondo in anticipo. E assicurati di chiamare Tortoise.init_models()
prima di creare modelli pydantic.
È possibile trovare una descrizione più dettagliata con esempi qui .