sql >> Databáze >  >> RDS >> PostgreSQL

Tortoise ORM pro Python nevrací vztahy entit (Pyndantic, FastAPI)

Problém nastane, když se pokusíte vygenerovat pydantické modely před Tortoise ORM je inicializován. Pokud se podíváte na základní pydantika například uvidíte, že všechny pydantic_model_creator se nazývají po Tortoise.init .

Zřejmým řešením je vytvořit pydantické modely po inicializaci Tortoise, například takto:


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

Event_Pydantic = pydantic_model_creator(Event)

Nebo pohodlnějším způsobem použijte early model init pomocí Tortoise.init_models() . Asi takhle:


from tortoise import Tortoise

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

V tomto případě je hlavní myšlenkou rozdělení pydantických a db modelů do různých modulů, aby import prvního nevedl k vytvoření druhého předem. A zajistěte volání Tortoise.init_models() před vytvořením pydantických modelů.

Podrobnější popis s příklady lze nalézt zde .




  1. Funkce LENGTH() v Oracle

  2. MYSQL rozlišuje zadání dvou sloupců i při přepnutí

  3. Při použití více smyček foreach použijte příkaz PDO vícekrát

  4. 'Přístup odepřen pro uživatele 'root'@'localhost' (pomocí hesla:NE)'