如何将记录保存到备用模型?

How to save a record to an alternate model?

我的项目在 flask-admin 中,使用 flask-sqlalchemy 作为 ORM。

这是我的模型 class:

class history_records(db.Model):
  id = db.Column(db.Integer,primary_key=True)
  table = db.Column(db.String(80))
  field_name = db.Column(db.String(80))
  old_value = db.Column(db.String(80))
  new_value = db.Column(db.Text)
  updated_datetime = db.Column(db.DateTime,default=datetime.utcnow())
  updated_by = db.Column(db.String(80),db.ForeignKey('users.username'))

  def __init__(self,table="",field_name="",updated_datetime=""):
    self.name = table + ' - ' + field_name + ' - ' + updated_datetime

  def __repr__(self):
    return self.name

然后:

class my_view(ModelView):
  #... form configs ...

  def on_model_change(self,form,model,is_created=False):
    #...do some stuff...
    history = history_records() # .get_create_form()

    history.table = model_name
    history.field_name = field_name
    history.old_value = old_value
    history.new_value = new_value

我的所有其他视图都继承自 my_view,我专门尝试编写它,因此我不必在每个视图中使用该视图的字段名称自定义 on_model_change

我缺少的部分是如何让我的应用程序将 on_model_change 方法创建的 history_records 记录保存到数据库 (postgres)。 class 的实例已实例化,它具有必要的信息,那么如何将实例保存到数据库?

我一直在引用这些页面但没有成功:

如有任何帮助,我们将不胜感激。

要保存历史实例,您需要将其添加到视图的会话中,例如

def on_model_change(self,form,model,is_created=False):
    #...do some stuff...
    history = history_records() # .get_create_form()

    history.table = model_name
    history.field_name = field_name
    history.old_value = old_value
    history.new_value = new_value
    self.session.add(history)