В sqlalchemy, возможно ли отфильтровать результат в результате подзапроса загрузки отношения?Обратите внимание на следующее (пожалуйста, игнорируйте любые синтаксические / API-ошибки)
Отношение:
User.address = relationship(Address,
secondary = UserAddress,
primaryjoin = (User.userid == UserAddress.userid),
secondaryjoin = (UserAddress.addressid == Address.addressid))
Запрос:
session.query(User).options(subqueryload(User.addresses))
Это даст мне все адреса, соответствующие условию соединения,Однако, что если я захочу провести дальнейшую фильтрацию по адресам.Например, если пользователь вошел в систему как гость, он / она должен видеть только адрес компании другого пользователя, но не свой домашний адрес.Итак, что-то вроде (гипотетически):
if user_group == 'guest':
option = subqueryload(User.addresses).filter(Address.type != 'home')
else:
option = subqueryload(User.addresses)
q = session.query(User).options(options)
Это не может быть выражено как условие первичного соединения или вторичного соединения.Что мне делать в этом случае?
Спасибо,