烧瓶管理员 按计算属性筛选



我想通过计算属性过滤我的烧瓶管理员结果,该属性从MongoDB的列中提取状态。下面是我的代码,它似乎不起作用。当我尝试使用非计算列执行此操作时,它工作正常。但是当我尝试使用我的计算列时,我可以看到该值是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'),
]

看起来烧瓶管理员根据 sql 进行过滤/"排序依据"(它允许不从数据库读取所有数据(,因为计算属性无法转换为 SQL,并且您无法过滤/"排序依据"它们

最新更新