【问题标题】:How can I filter a column in the edit form with Flask-Admin ModelView?如何使用 Flask-Admin ModelView 过滤编辑表单中的列?
【发布时间】:2015-04-08 20:46:32
【问题描述】:

我正在使用带有 flask-admin 的模型视图,并且我想在编辑/创建视图中过滤一列。列/字段是一种关系,我只想显示属于登录用户的字段,即relationship_id == user.id

【问题讨论】:

  • 这也是我要找的,如果你有的话,请分享你的解决方案,谢谢:)
  • 我能够弄清楚并在下面添加代码

标签: python flask flask-admin


【解决方案1】:

实际上我找到了一个更简单的方法,如下所示,似乎不需要覆盖ModelView中的edit_form方法,只需将过滤函数作为命名参数(query_factory)传递给form_args,它就像一个迷人的!

class CustomModelView(ModelView):
    form_args = dict(
        status = dict(label='Status', query_factory=filtering_function)
    )

def filtering_function():
   return app.db.query(CustomModel).filter_by(field_to_filter=my_criteria)

【讨论】:

    【解决方案2】:

    我能够弄清楚这一点。希望下面的代码有所帮助。对我来说效果很好。

    下面是代码的大致思路:

    class CustomModelView(ModelView):
        def edit_form(self, obj):
            return CustomModelForm(obj=obj)
    
    def filtering_function():
       return app.db.query(CustomModel).filter_by(field_to_filter=my_criteria)
    
    #from wtforms.form import Form
    class CustomModelForm(Form):
        field_to_filter = QuerySelectField(query_factory=filtering_function)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-17
      • 1970-01-01
      相关资源
      最近更新 更多