我想在两个 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'))
Run Code Online (Sandbox Code Playgroud)
我想要一个属性 'Users.valid_addresses' 与相同的 'addresses' 表过滤相关,其中 Addresses.historic == 'N' 像下面的查询:
Session.Query(Addresses).filter_by(historic = 'N').all()
Run Code Online (Sandbox Code Playgroud)
我正在寻找“SQLAlchemy 方式”。
我觉得这已经得到了回答,但我没有正确地表达这个问题。
This is covered in the SQLAlchemy docs under "Specifying Alternate Join Conditions".
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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4516 次 |
| 最近记录: |