Flask-AppBuilder视图中的query.filter代码在哪里?

时间:2018-09-05 18:29:20

标签: python flask flask-sqlalchemy flask-appbuilder

假设我们在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的常规解决方案似乎无法以相同的方式实现。

1 个答案:

答案 0 :(得分:0)

深入研究之后,flask-appbuilder使用其自己的 filterclass 以便使您能够过滤视图。

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

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

要进行其他自定义和Flask-appbuilder的第一个调用端口,请直接转到API Reference,在这里您将找到几个正在使用的 filterclass 的示例。

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

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

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

希望这对某人有帮助,因为我花了将近两个(em)(叹气)来弄清楚...