【发布时间】:2016-08-22 22:29:12
【问题描述】:
我试图模拟以下情况:一个程序有多个版本,其中一个版本是当前版本(不一定是最新版本)。
这就是我现在的做法:
class Program(Base):
__tablename__ = 'programs'
id = Column(Integer, primary_key=True)
name = Column(String)
current_version_id = Column(Integer, ForeignKey('program_versions.id'))
current_version = relationship('ProgramVersion', foreign_keys=[current_version_id])
versions = relationship('ProgramVersion', order_by='ProgramVersion.id', back_populates='program')
class ProgramVersion(Base):
__tablename__ = 'program_versions'
id = Column(Integer, primary_key=True)
program_id = Column(Integer, ForeignKey('programs.id'))
timestamp = Column(DateTime, default=datetime.datetime.utcnow)
program = relationship('Filter', foreign_keys=[program_id], back_populates='versions')
然后我收到错误:无法确定关系 Program.versions 上父/子表之间的连接条件 - 有多个外键路径链接表。指定 'foreign_keys' 参数,提供应计为包含对父表的外键引用的列的列表。
但是我应该为“Program.versions”关系提供什么外键?有没有更好的方法来模拟这种情况?
【问题讨论】:
标签: python database sqlalchemy