gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 16:22:32 25 4
gpt4 key购买 nike

我的项目在 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

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

我所有其他 View 都继承自 my_view我特别想写它,所以我不必自定义 on_model_change在每个 View 中使用该 View 的字段名称。

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

我一直在引用这些页面但没有成功:
  • Flask-Admin: How to change model using on_model_change?
  • Make primary-key fields editable in Flask-Admin (peewee 特定)
  • Unable to create models on Flask-admin (建议为传递给 初始化 模型方法的变量设置默认值,我已经这样做了)
  • Customize (override) Flask-Admin's Submit method from edit view (@makaron 的回答很有见地)
  • Flask-admin; To add custom logic during row insertion
  • how to use flask-admin for editing modelview

  • 任何帮助将不胜感激。

    最佳答案

    要保存历史实例,您需要将其添加到 View 的 session 中,例如

    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)

    关于flask - 如何将记录保存到备用模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35777508/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com