我似乎无法绕过AmbigiousForeignKeyError
。目前我正在处理
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])
这背后的想法是通过存储时间相关信息的节点更改对象遍历节点对象(更改是否可行等)。
这里的两种关系都是一对一的。我在排除prev_change
和next_change
背景时已经完成了这项工作,但是在没有遇到AmbigiousForeignKeyError
的情况下无法使双向关系正常工作。
答案 0 :(得分:1)
解决此问题的最简单方法是:
prev_change
next_change
和Node
关系
backref
添加到old_node
和new_node
这就是新关系的样子:
old_node = relationship(
"Node", foreign_keys=[old_node_id],
backref=backref('prev_change', uselist=False),
)
new_node = relationship(
"Node", foreign_keys=[new_node_id],
backref=backref('next_change', uselist=False),
)