Estou preso a cargas unidas em vários modelos. Tenho um projeto FastAPI e estou usando Jinja para servir algumas páginas HTML. Nessa página, preciso acessar o conteúdo unido de outras tabelas (parece que fazer o acesso no momento de não funciona no modelo Jinja? Continuo recebendo erros do Greenlet). Como certamente obterei esses dados, estou fazendo cargas unidas nas propriedades que mapeiam para os outros modelos:
statement = statement.options(
joinedload(Item.purchases),
joinedload(Item.purchases.receipt),
joinedload(Item.purchases.receipt.store),
)
No entanto, recebo este erro:
joinedload(Item.purchases.receipt),
^^^^^^^^^^^^^^^^^^^^^^
File "/app/.venv/lib/python3.12/site-packages/sqlalchemy/orm/attributes.py", line 474, in __getattr__
raise AttributeError(
AttributeError: Neither 'InstrumentedAttribute' object nor 'Comparator' object associated with Item.purchases has an attribute 'receipt'
Além disso, como estou unindo 4 tabelas, sinto que devo minimizar o número de colunas selecionadas nas junções, mas não sei como faria isso.
Para fazer uma operação
joinedload
entre várias relações, você pode empilhar.joinedload()
chamadas:onde estou assumindo que
Purchase
eReceipt
são as classes de modelo para essas tabelas.Você pode ler mais na documentação .