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

时间:2016-03-03 16:21:13

标签: flask sqlalchemy flask-sqlalchemy flask-admin

我的项目是使用flask-sqlalchemy作为ORM的flask-admin。

这是我的模特课:

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

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

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

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

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

JTable