PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Tortoise ORM para Python não retorna relações de entidades (Pyndantic, FastAPI)


O problema ocorre quando se tenta gerar modelos pydantic antes O ORM da tartaruga é inicializado. Se você observar pydantic básico exemplo, você verá que todos os pydantic_model_creator são chamados depois Tortoise.init .

A solução óbvia é criar modelos pydantic após a inicialização do Tortoise, assim:

await Tortoise.init(db_url="sqlite://:memory:", modules={"models": ["__main__"]})
await Tortoise.generate_schemas()

Event_Pydantic = pydantic_model_creator(Event)


Ou de uma maneira mais conveniente, use init do modelo inicial por meio de Tortoise.init_models() . Igual a:

from tortoise import Tortoise

Tortoise.init_models(["__main__"], "models")
Tournament_Pydantic = pydantic_model_creator(Tournament)

No caso, a ideia principal é dividir os modelos pydantic e db em módulos diferentes, para que a importação do primeiro não leve à criação do segundo antecipadamente. E certifique-se de chamar Tortoise.init_models() antes de criar modelos pydantic.

Uma descrição mais detalhada com exemplos pode ser encontrada aqui .