2017-05-01 6 views
0

フラスコにアプリケーションを開発しました。私は作成と変更をトレースしたい。管理者のために私はフラスコ管理者を使用しています:フラスコモデルのトレース作成と変更

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での保存のために作成できますか?

答えて

0

SQLAlchemyは、イベントリスンを提供します。 にlistens_forという飾りがあります。 listens_for(HistoryModel, "after_insert")listens_for(HistoryModel.date, "set")に使用します。 eventsorm eventsについてのドキュメントを確認してください。

関連する問題