我想在两个 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 方式”。
我感觉这个问题已经得到了解答,但我未能正确表达问题。
这在 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)