【问题标题】:Override Flask Admin save new row in table覆盖 Flask Admin 在表中保存新行
【发布时间】:2018-07-11 01:21:14
【问题描述】:

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

【问题讨论】:

    标签: python flask flask-admin


    【解决方案1】:

    显然,您可以覆盖 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 使用类似的删除部分方法,但您只有模型作为参数。

    【讨论】:

    • 这对我根本不起作用。我也收到“NoteView”错误
    • 您没有提供任何代码来知道类的名称,您必须更改此示例以匹配您自己的类。
    • 终于明白了:)。没有 NoteView
    猜你喜欢
    • 1970-01-01
    • 2016-07-26
    • 1970-01-01
    • 2012-04-19
    • 2016-03-17
    • 2016-11-10
    • 2017-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多