关于关系的 SqlAlchemy 'after_insert' 事件?

And*_*rew 5 python sqlalchemy relationships flask-sqlalchemy

我有一个看起来像这样的设置

class Topic(db.Model):
    __tablename__ = 'topic'

    id = db.Column(db.Integer, primary_key=True)
    parent = db.relationship(
        'Topic',
        secondary='parent_child_relation',
        primaryjoin='Topic.id == ParentChildRelation.child_topic_id',
        secondaryjoin='ParentChildRelation.parent_topic_id == Topic.id',
        backref='children',
        uselist=False
    )

class ParentChildRelation(db.Model):
    __tablename__ = 'parent_child_relation'

    id = db.Column(db.Integer, primary_key=True)
    child_topic_id = db.Column(db.Integer, db.ForeignKey('topic.id'), nullable=False)
    parent_topic_id = db.Column(db.Integer, db.ForeignKey('topic.id'), nullable=False)
Run Code Online (Sandbox Code Playgroud)

并设置了事件来观察 ParentChildRelation 的变化

@event.listens_for(ParentChildRelation, 'after_insert')
def parent_child_relation_inserted(mapper, connection, target):
    # DO STUFF HERE
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,当我执行以下操作时,SqlAlchemy 似乎不会触发这些事件(我正在使用 Flask SqlAlchemy):

topic = Topic(id=new_id)
new_parent = Topic.query.get(anotherId)
topic.parent = new_parent
db.session.add(topic)
db.session.commit()
Run Code Online (Sandbox Code Playgroud)

我认为应该调用事件处理程序,但after_insert没有调用处理程序。

这是 SqlAlchemy 的限制,还是我遗漏了什么?