(SQLAlchemy 1.0.11,Python 2.7)
模型中的列定义:
public_data = Column(MutableDict.as_mutable(JSON), nullable=False)
同一模型文件中的事件监听器:
def __listener(target, value, oldvalue, initiator):
... do some stuff
event.listen(User.public_data, 'set', __listener)
应该触发set
事件的更改:
# this doesn't work
user.public_data['address'] = ''
# but this works
user.public_data = {}
仅修改JSON属性时,永远不会触发事件。我逐步执行了SQLAlchemy代码,发现在执行上面的行之后,调用了模型的changed()
方法,我认为该方法应该负责事件触发。我做错了还是不支持?