0
ここでAmbigiousForeignKeyError
を回避することはできません。ここでは両方の関係は Sqlalchemy同じスキーマ(およびバックリファレンス)間で複数の一対一の関係を定義
私は
class Node(Base):
__tablename__ = 'nodes'
id = Column(Integer, primary_key=true)
prev_change = relationship("NodeChange", back_populates="new_node", uselist=False)
next_change = relationship("NodeChange", back_populates="old_node", uselist=False)
Class NodeChange(Base):
__tablename__ = "node_changes"
id = Column(Integer, primary_key=true)
date = Column(Date)
old_node_id = Column(Integer, ForeignKey('nodes.id'))
old_node = relationship("Node", foreign_keys=[old_node_id])
new_node_id = Column(Integer, ForeignKey('nodes.id'))
new_node = relationship("Node", foreign_keys=[new_node_id])
を扱ってるものを、この背後にある考え方は、時間に関連する情報を格納したノードの変更オブジェクトを介してノードオブジェクトを横断するある現在(など変更可能なかではありません)
ここでは1対1です。prev_change
と
next_change
のバックリーフを除外してこの作業を行っていますが、
AmbigiousForeignKeyError
に遭遇することなく2ウェイ関係を動作させることはできません。