我好像在这里绕不过去。以下是我目前正在处理的问题
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
backref的情况下实现了这一点,但如果不遇到AmbigiousForeignKeyError
,则无法实现双向关系
解决此问题的最简单方法是:
Node
中删除prev_change
和next_change
关系backref
添加到old_node
和new_node
这就是新关系的样子:
相关问题 更多 >
编程相关推荐