1

我有一个具有自关系和非规范化字段的模型,该字段具有相关行的一些值。有没有办法让它们自动保持同步,而不必通过属性来引导关系?

例子:

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 并到达非规范化字段而不是进行新查询,那就更好了。

4

1 回答 1

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
于 2013-10-21T15:24:39.283 回答