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 に答える