我有一个带有自我关系和非规范化字段的模型,其中有一些来自相关行的值。有没有办法让它们自动保持同步,而不必通过属性引导关系?
示例:
class Node(Base):
__tablename__ = 'node'
id = Column(Integer, primary_key=True)
id_parent = Column(Integer, ForeignKey('node.id))
data = Column(String(64))
last_modified = Column(DateTime, onupdate=utcnow)
parent_last_modified = Column(DateTime, onupdate=utcnow)
parent = relationship('Node', remote_side=[id])
我希望将parent_last_modified与parent.last_modified保持同步,以便随时更改。如果我可以通过parent.last_modified到达parent_last_modified并到达非规范化字段而不是进行新查询,那就更好了。
答案 0 :(得分:0)
以下事件回调解决了问题:
@event.listens_for(Node.parent, 'set')
def node_parent_listener(node, parent, previous, initiator):
if parent is None:
node.parent_last_modified = None
else:
node.parent_last_modified = parent.last_modified