【问题标题】:Where does query.filter code go in a Flask-AppBuilder view?query.filter 代码在 Flask-AppBuilder 视图中的什么位置?
【发布时间】:2018-09-26 00:25:05
【问题描述】:

假设我们在 Flask-AppBuilder 中有以下简单视图:

class Table_AView(ModelView):
    datamodel = SQLAInterface(Table_A)
    label_columns = {'Field_A':'A'}
    list_columns = ['Field_A']

我们希望列出来自Field_A 的所有数据的列返回等于“某些文本”的所有字段。

假设下面的查询是正确的,我们会将这行代码放在上面代码的什么位置来达到预期的结果?

result = session.query(Table_A).filter_by(Field_A = 'some text').all()

由于实现是使用 Flask-appbuilder,因此应用于 flask 和 sqlalchemy 的常用解决方案似乎没有以相同的方式实现。

【问题讨论】:

标签: python flask flask-sqlalchemy flask-appbuilder


【解决方案1】:

经过大量挖掘flask-appbuilder 使用它自己的 filterclass 来过滤视图。

所有类都在 GitHub 上引用: Flask Filter Classes List

这里还要注意FilterEqualFilterEqualFunction 之间的区别: What is the difference between: FilterEqual and FilterEqualFunction?

对于其他自定义和 Flask-appbuilder 的第一个调用端口,请直接访问 API Reference,您会在其中找到几个实际使用的 filterclass 示例。

本质上它非常简单。在您想要过滤的ModelView 类中的views.py 代码中,只需添加:

base_filters = [['field_column_name', FilterEqual, 'abc']]

这只会显示field_column_name 变量等于abc 的行。

希望这对某人有所帮助,因为我花了差不多 (叹气) 两个星期才弄明白...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-11
    • 1970-01-01
    • 2020-09-29
    • 2018-04-28
    • 2016-07-08
    • 2021-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多