PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Tortoise ORM per Python non restituisce relazioni di entità (Pyndantic, FastAPI)

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 .