SQLAlchemy:多个连接路径上的组合backref

时间:2013-06-23 18:36:03

标签: python sql sqlalchemy relationship backreference

假设我们有一个'People'表,其中包含'HomeAddressID'和'WorkAddressID'列。

我们正在定义与表'地址'的多个连接路径关系,如下所示:

HomeAddress = relationship('Addresses', foreign-keys=[HomeAddressID])
WorkAddress = relationship('Addresses', foreign-keys=[WorkAddressID])

现在我希望我的班级“地址”有一个属性“人物”,列出所有与此地址相关的人,无论是家还是工作。

我该怎么做?

2 个答案:

答案 0 :(得分:0)

执行此操作的最简单的通用方法是使用人员< - >地址映射的映射表,其中列为“人员ID,地址ID,类型”,否则在数据库端开始变得有点沉重。

答案 1 :(得分:0)

未经测试,但您可以添加backref:

HomeAddress = relationship('Addresses', foreign_keys=[HomeAddressID],
backref='home_address')

WorkAddress = relationship('Addresses', foreign_keys=[WorkAddressID], backref='work_address')

然后你可以这样做:

Addresses.home_address.all() or Addresses.work_address.all()