【问题标题】:SQLAlchemy: a combined backref on multiple join pathsSQLAlchemy:多个连接路径上的组合反向引用
【发布时间】:2013-06-20 06:47:18
【问题描述】:

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

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

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

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

我该怎么做?

【问题讨论】:

    标签: python sql sqlalchemy relationship backreference


    【解决方案1】:

    最简单的通用方法是创建一个用于人员地址映射的映射表,其中包含“人员 id、地址 id、类型”列,否则数据库端的事情开始变得有点繁重。

    【讨论】:

      【解决方案2】:

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

      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()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-06-10
        • 2019-08-06
        相关资源
        最近更新 更多