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

最佳答案

显然,您可以覆盖方法on_model_change以执行操作,然后再保存/更新新模型,或者之后after_model_change进行操作。
如果使用Flask-SqlAchemy,则可以从类BaseModelViewModelView继承。

在每种情况下,都提供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_deleteafter_model_delete来使用相似的方法来删除零件,但只有模型作为参数。

关于python - 覆盖Flask Admin在表中保存新行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51275940/

10-13 05:38