В SQLAlchemy, можете ли вы отфильтровать полиморфно связанную модель по типу связанной с ней записи? - PullRequest
0 голосов
/ 18 февраля 2011

Я использую полиморфную ассоциацию в SQLAlchemy, как описано в в этом примере .Его также можно найти в каталоге примеров в исходном коде SQLAlchemy.

Учитывая эту настройку, я хочу запросить все Address es, связанные с User s.Не a user, а any user.

В сыром SQL я мог бы сделать это так:

select addresses.* from addresses 
join address_associations 
on addresses.assoc_id = address_associations.assoc_id
where address_associations.type = 'user'

Есть ли способ сделать это с помощью сеанса ORM?

Могу ли я просто запустить этот сырой SQL, а затем применить класс Address к каждой строке в результатах?

1 Ответ

2 голосов
/ 18 февраля 2011

специальные соединения с использованием ORM описаны по адресу:

http://www.sqlalchemy.org/docs/orm/tutorial.html#querying-with-joins

for address in sess.query(Address).join(Address.association).filter_by(type='users'):
    print "Street", address.street, "Member", address.member
...