【问题标题】:Flask-Admin: How to change model using on_model_change?Flask-Admin:如何使用 on_model_change 更改模型?
【发布时间】:2015-09-16 14:15:03
【问题描述】:

我正在尝试将字段的值设置为基于相同表单中的另一个字段:

    def on_model_change(form, model, is_created):
        model.textcolumn.data = model.textcolumn2.data

通过 Flask-Admin 界面更新不会引发异常,但没有对 model.textcolumn 中的值进行任何更改。

检查“模型”对象,我还注意到这与用于生成 ModelView 的 SQLAlchemy 模型不同。

如何将 model.textcolumn 的值更改为 model.textcolumn2 的值?有没有办法直接访问 SQLAlchemy 模型对象?这样会好很多。

【问题讨论】:

  • 原来“模型”一直是 SQLAlchemy 模型。我在函数重载定义中缺少“self”参数:def on_model_change(self, form, model, is_created):,这导致所有其他参数被错误命名。

标签: python sqlalchemy wtforms flask-admin


【解决方案1】:

我使用特定模型的管理表单完成此操作

class YourModelAdmin(MyModelView):
    form_overrides = dict(filename=FileField)

    def on_model_change(self, form, instance):
        pass

   admin.add_view(YourModelAdmin(YourModel, db.session))

【讨论】:

  • 第 5 行的class 在您的示例中代表什么?
  • 感谢@AlisonS,这是一个错字。写“class”的地方我的意思是“pass”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-14
  • 2015-05-17
  • 1970-01-01
  • 2015-12-01
  • 1970-01-01
相关资源
最近更新 更多