Я хочу регистрировать каждое действие, что будет сделано с некоторыми SQLAlchemy-Models.Отслеживание изменений модели в SQLAlchemy
Итак, у меня есть after_insert, after_delete и before_update крючки, где я спасу предыдущее и текущее представление модели,
def keep_logs(cls):
@event.listens_for(cls, 'after_delete')
def after_delete_trigger(mapper, connection, target):
pass
@event.listens_for(cls, 'after_insert')
def after_insert_trigger(mapper, connection, target):
pass
@event.listens_for(cls, 'before_update')
def before_update_trigger(mapper, connection, target):
prev = cls.query.filter_by(id=target.id).one()
# comparing previous and current model
MODELS_TO_LOGGING = (
User,
)
for cls in MODELS_TO_LOGGING:
keep_logs(cls)
Но есть одна проблемы: когда я пытаюсь найти модель в before_update hook, SQLA возвращает измененную (грязную) версию. Как я могу получить предыдущую версию модели перед ее обновлением? Есть ли другой способ сохранить изменения модели?
Спасибо!