0

假设我们有一个包含“HomeAddressID”和“WorkAddressID”列的“People”表。

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

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

现在我希望我的“地址”类有一个属性“人”,它将列出与该地址相关的所有人,无论是家庭还是工作。

我怎样才能做到这一点?

4

2 回答 2

0

未经测试,但您可以添加一个反向引用:

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()
于 2014-02-27T13:51:58.977 回答
0

最简单的通用方法是为 person<->address 映射创建一个映射表,其中包含“person id, address id, type”列,否则数据库端的事情开始变得有点沉重。

于 2013-06-24T05:22:31.430 回答