【发布时间】:2011-11-06 09:06:14
【问题描述】:
在 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)
这不能表示为primaryjoin 或secondaryjoin 中的条件。这种情况我该怎么办?
谢谢,
【问题讨论】:
标签: python sqlalchemy relationship