我想通过一个计算属性来过滤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'),
]
答案 0 :(得分:0)
看起来好像flask admin基于sql进行过滤/“排序”(不允许从数据库中读取所有数据),因为计算所得的属性无法转换为sql,而您也不能对它们进行过滤/“排序”