在Flask模型中跟踪创建和更改

时间:2017-05-01 18:59:06

标签: python flask flask-sqlalchemy

我在烧瓶中开发了一种应用。我想追踪创造和变化。对于管理员我使用flask-admin:

class MyModelAdmin(ModelView):

    def on_model_change(self, form, model, is_created):

       history = HistoryModel(
          ..
          ..
       )
       db.session.add(history)
       db.session.commit()

我有保存更改的历史记录模型:

class HistoryModel(db.Model):
   __tablename__ = 'history'

   id = db.Column(db.Integer, primary_key=True, autoincrement=True)
   date = db.Column(db.DateTime)
   user_id = db.Column(db.Integer, nullable=True)
   object_type = db.Column(db.String(32), nullable=False)

我不确定这是正确的做法。顺便说一句,如何在HistoryModel中跟踪更改并创建保存?

2 个答案:

答案 0 :(得分:0)

SQLAlchemy为您提供事件监听。 listens_for中有一个名为sqlalchemy.event的装饰。您可以将其用于listens_for(HistoryModel, "after_insert")listens_for(HistoryModel.date, "set")。查看有关eventsorm events

的文档

答案 1 :(得分:0)

扩展名SQLAlchemy-continuum可能是值得研究的选项。它会版本化您的模型(数据)