Flask Admin按计算属性筛选

时间:2018-09-24 16:49:19

标签: flask flask-admin

我想通过一个计算属性来过滤flask-admin结果,该属性从MongoDB的列中提取状态。以下是我的代码,该代码似乎无效。当我使用非计算列尝试此操作时,它工作正常。但是,当我尝试使用计算列时,我可以看到值是ENABLED,但是当仅按ENABLED进行过滤时,我什么也没得到;当按ENABLED进行任何过滤时,我什么都得到了。

这是模型对象

class Foo(db.Model):
    __tablename__ = 'foo'
    bar = db.Column(db.String(100))

    @property
    def bar_status(self):
        status = get_status_for_bar(self.bar) # Checks mongo for record
        return status if status is not None else "Not in list"

查看

# Create custom filter class
class FilterBarEnabled(BaseSQLAFilter):
    def apply(self, query, value, alias=None):
        return query.filter(self.column != "ENABLED")

    def operation(self):
        return 'is Enabled'


class FooModelView(BaseModelView):
    can_view_details = True
    column_list = ('bar_status')
    page_size = 5

    column_filters = [
        FilterEnabled(column=Foo.bar_status, name='Suspicious'),
    ]

1 个答案:

答案 0 :(得分:0)

看起来好像flask admin基于sql进行过滤/“排序”(不允许从数据库中读取所有数据),因为计算所得的属性无法转换为sql,而您也不能对它们进行过滤/“排序”