query.filter 代码在 Flask-AppBuilder 视图中的什么位置?

Where does query.filter code go in a Flask-AppBuilder view?

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

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

我们希望该列列出从 Field_A 到 return 所有字段等于 "some text" 的所有数据。

假设下面的查询是正确的,我们将把这行代码放在上面代码的什么地方来实现预期的结果?

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

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

经过大量挖掘 flask-appbuilder 使用它自己的 filterclass 以便您能够过滤您的观点。

所有 class 均在 GitHub 上引用: Flask Filter Classes List

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

对于其他自定义和 Flask-appbuilder 的第一个调用端口,请直接转到 API Reference,在那里您可以找到 filterclass[ 的几个示例=40=] 在行动中。

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

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

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

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