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

Flask 如何将记录保存到备用模型?,flask,sqlalchemy,flask-sqlalchemy,flask-admin,Flask,Sqlalchemy,Flask Sqlalchemy,Flask Admin,我的项目在flask admin中,使用flask sqlalchemy作为ORM 这是我的模型课: 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_

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

这是我的模型课:

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
然后:

我的所有其他视图都继承自
我的\u视图
,我专门尝试编写它,这样我就不必在每个视图中使用该视图的字段名对\u model\u change进行自定义

我缺少的是如何让我的应用程序将
on\u model\u change
方法创建的
history\u记录保存到数据库(postgres)。类的一个实例被实例化,它具有必要的信息,那么如何将实例保存到数据库中?

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

  • peewee
    specific)
  • (建议为传递给initmodel方法的变量设置默认值,我已经这样做了)
  • (@makaron的回答很有洞察力)

任何帮助都将不胜感激。

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

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)

感谢您的帮助@pjcunningham。我添加了行
self.session.add(history)
,但这导致了以下错误:编程错误:基于此:我将变量
model\u name
field\u name
old\u value
new\u value
转换为
str()
,然后它就工作了。
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)