2012-10-11 25 views
1

说我有这2个对象过滤单一关系属性,具有一对多的关系:SQLAlchemy的:由多个值

class A(Base): 
    ... 
    collection = relationship("B") 

class B(Base): 
    ... 
    a_id = Column(Integer, ForeignKey('table_for_a.id'), nullable=False) 
    key = Column(String(50), nullable=False) 

如何可以查询其具有B A的(“苹果”),B (“orange”)和B(“banana”)同时在A.collection中?

谢谢。

回答

2

一会儿挖后,我发现我能得到像这样期望的结果:

from sqlalchemy import and_ 

... 
session.query(A).filter(
    and_(
     A.collection.any(key="apple"), 
     A.collection.any(key="orange"), 
     A.collection.any(key="banana") 
    ) 
).all()