【发布时间】:2018-07-11 01:21:14
【问题描述】:
通过 Flask 的管理面板在表格中创建新行时,我如何能够覆盖和添加一些额外的代码?
例如:用户在“发布”表中输入新行的信息,然后单击保存。我想添加一些代码来使用新的行信息自动化流程。
【问题讨论】:
标签: python flask flask-admin
通过 Flask 的管理面板在表格中创建新行时,我如何能够覆盖和添加一些额外的代码?
例如:用户在“发布”表中输入新行的信息,然后单击保存。我想添加一些代码来使用新的行信息自动化流程。
【问题讨论】:
标签: python flask flask-admin
显然,您可以覆盖 on_model_change 方法以在保存/更新新模型之前执行操作,或者 after_model_change 在之后执行某些操作。
如果您使用的是 Flask-SqlAchemy,则可以从 BaseModelView 或 ModelView 类继承。
在每种情况下,都提供了 3 个参数可供使用:视图使用的 form、新的/更新的 model 和标志 is_created 以了解模型是否是新的 (True) 或更新了。
您可以像下面这样定义模型视图:
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 使用类似的删除部分方法,但您只有模型作为参数。
【讨论】: