首页 > 解决方案 > 覆盖 Flask Admin 在表中保存新行

问题描述

通过 Flask 的管理面板在表格中创建新行时,我如何能够覆盖和添加一些额外的代码?
例如:用户在“发布”表中输入新行的信息,然后单击保存。我想添加一些代码以使用该新行信息自动化流程。

标签: pythonflaskflask-admin

解决方案


显然,您可以on_model_change在保存/更新新模型之前覆盖这些方法以执行操作,或者在之后执行某些操作。after_model_change您可以从类继承,BaseModelView或者ModelView如果您使用的是 Flask-SqlAchemy。

在每种情况下,都提供了 3 个参数供您使用:form视图使用的参数、新的/更新的以及用于了解模型是新的 ( ) 还是更新model的标志。is_createdTrue

您可以定义模型视图,如下所示:

from flask_admin import Admin
from flask_admin.contrib.sqla import ModelView

class PostView(ModelView):

    def after_model_change(self, form, model, is_created):
        print(form, model, is_created)

    def on_model_change(self, form, model, is_created):
        print(form, model, is_created)

admin = Admin(template_mode='bootstrap3')
admin.add_view(PostView(Post, db.session, name='Posts'))

on_model_delete注意:您可以使用和访问删除部分的类似方法after_model_delete,除了您只有模型作为参数给出。


推荐阅读