DateBetweenFilter 过滤器在烧瓶管理员中不起作用
DateBetweenFilter filter is not working in flask admin
我在 flask admin 中创建了一个自定义 datetimefilter
,它在 UI 中看起来不错(能够 select 日期时间范围),但在功能上不起作用。我认为 apply 方法不起作用。我要应用此过滤器的 table 在 Cassandra
.
中
from flask_admin.contrib.sqla.filters import BaseSQLAFilter
from flask_admin.model import filters
class DateBetweenFilter(BaseSQLAFilter, filters.BaseDateBetweenFilter):
def __init__(self, column, name, options=None, data_type=None):
super(DateBetweenFilter, self).__init__(column,
name,
options,
data_type='daterangepicker')
def apply(self, query, value, alias=None):
start, end = value
return query.filter(self.get_column(alias).between(start, end))
和使用过滤器的相应管理员 class
class SearchAdminView(BaseModelView):
column_filters = [
DateBetweenFilter(
Search.created_date, 'Created Date'
)
]
我错过了什么?
您可能错过了在 get_list() 方法中为管理员 class 中定义的过滤器添加调用 apply() 的代码。
尝试在您的 get_list() 方法中添加以下代码。
def get_list(self, page, sort_column, sort_desc, search, filters,
execute=True, page_size=None):
"""
Get list of objects
"""
query = self.get_query(page, page_size)
for flt, k, value in filters:
query = self._filters[flt].apply(query, value, page_size)
我在 flask admin 中创建了一个自定义 datetimefilter
,它在 UI 中看起来不错(能够 select 日期时间范围),但在功能上不起作用。我认为 apply 方法不起作用。我要应用此过滤器的 table 在 Cassandra
.
from flask_admin.contrib.sqla.filters import BaseSQLAFilter
from flask_admin.model import filters
class DateBetweenFilter(BaseSQLAFilter, filters.BaseDateBetweenFilter):
def __init__(self, column, name, options=None, data_type=None):
super(DateBetweenFilter, self).__init__(column,
name,
options,
data_type='daterangepicker')
def apply(self, query, value, alias=None):
start, end = value
return query.filter(self.get_column(alias).between(start, end))
和使用过滤器的相应管理员 class
class SearchAdminView(BaseModelView):
column_filters = [
DateBetweenFilter(
Search.created_date, 'Created Date'
)
]
我错过了什么?
您可能错过了在 get_list() 方法中为管理员 class 中定义的过滤器添加调用 apply() 的代码。
尝试在您的 get_list() 方法中添加以下代码。
def get_list(self, page, sort_column, sort_desc, search, filters,
execute=True, page_size=None):
"""
Get list of objects
"""
query = self.get_query(page, page_size)
for flt, k, value in filters:
query = self._filters[flt].apply(query, value, page_size)