我想在两个ORM对象之间建立一对多关系,并使用第二个关系扩展它,该关系在应用约束时链接到相同的“多个”对象。
以下示例可能会详细说明:
class Users(SQLABase):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
addresses = relationship('Addresses', backref='user')
class Addresses(SQLABase):
__tablename__ = 'addresses'
id = Column(Integer, primary_key=True)
historic = (String(1))
add1 = Column(String)
user = Column(Integer, ForeignKey('users.id'))
我想要一个属性'Users.valid_addresses',它与相同的'地址'表格过滤有关,其中Addresses.historic =='N'就像下面的查询一样:
Session.Query(Addresses).filter_by(historic = 'N').all()
我正在寻找“SQLAlchemy方式”。
我觉得这已经得到了解答,但我没有正确地说出这个问题。
答案 0 :(得分:3)
“Specifying Alternate Join Conditions”下的SQLAlchemy文档中对此进行了介绍。
class User(Base):
__tablename__ = 'user'
id = Column(Integer, primary_key=True)
name = Column(String)
boston_addresses = relationship("Address",
primaryjoin="and_(User.id==Address.user_id, "
"Address.city=='Boston')")
class Address(Base):
__tablename__ = 'address'
id = Column(Integer, primary_key=True)
user_id = Column(Integer, ForeignKey('user.id'))
street = Column(String)
city = Column(String)
state = Column(String)
zip = Column(String)