私は次のような状況をモデル化しようとしています。プログラムには多くのバージョンがあり、そのうちの1つは現在のものです(必ずしも最新ではありません)。SQLAlchemyの1対1の関係?
これは私が今それをやっている方法です:
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'関係にはどのような外部キーを用意する必要がありますか?この状況をモデル化する良い方法はありますか?