【发布时间】:2020-05-16 06:01:29
【问题描述】:
我将 SQLAlchemy 与 Postgres 一起使用。
来自https://auth0.com/blog/sqlalchemy-orm-tutorial-for-python-developers/的代码示例
我有 3 个对象:
- 演员
- 特技演员
- 联系方式
在原始代码示例中,关系如下:
- 演员:ContactDetails = 1:0..*
- 演员:特技演员 = 1:1
查看代码:
class Actor(Base):
__tablename__ = 'actors'
id = Column(Integer, primary_key=True)
name = Column(String)
birthday = Column(Date)
class Stuntman(Base):
__tablename__ = 'stuntmen'
id = Column(Integer, primary_key=True)
name = Column(String)
active = Column(Boolean)
actor_id = Column(Integer, ForeignKey('actors.id'))
actor = relationship("Actor", backref=backref("stuntman", uselist=False))
class ContactDetails(Base):
__tablename__ = 'contact_details'
id = Column(Integer, primary_key=True)
phone_number = Column(String)
address = Column(String)
actor_id = Column(Integer, ForeignKey('actors.id'))
actor = relationship("Actor")
我正在努力将此模型扩展到以下关系:
- 演员:ContactDetails = 1:0..*
- 演员:特技演员 = 1:1
- Stuntman:ContactDetails = 1:0..*
特技演员也很努力,值得拥有联系方式。谁能帮忙?!
【问题讨论】:
-
一种可能性是从
ContactDetails中删除actor_id,并添加将ContactDetails连接到Actor和Stuntman的关联表。 -
感谢@IljaEverilä。这与 Cysio 的解决方案相同,详见下文。
标签: python postgresql orm sqlalchemy