如何在flask管理员中制作自定义过滤器

时间:2014-09-23 13:56:54

标签: flask-admin

我在这做错了什么?我正在抛出异常。

例外:无效字段:不包含任何列。

我实际上想要从包含房间成本的三个不同列中过滤结果。如果任何房间满足三个房间的特定条件,那么它应该出现在列表中。这就是我想制作自定义过滤器的原因。

请帮帮我。提前谢谢。

    from flask.ext.admin.babel import lazy_gettext
    from flask.ext.admin.model import filters

    class MyBaseFilter(filters.BaseFilter):
        """
            Base SQLAlchemy filter.
        """
        def __init__(self, column, name, options=None, data_type=None):
            """
                Constructor.

                :param column:
                    Model field
                :param name:
                    Display name
                :param options:
                    Fixed set of options
                :param data_type:
                    Client data type
            """
            super(MyBaseFilter, self).__init__(name, options, data_type)

            self.column = column

    class Views():
        class HotelAdmin(ModelView):
            class FilterCost(MyBaseFilter):
                def apply(self, query, value):
                    return query.filter(self.column > value)

                def operation(self):
                    return lazy_gettext('Cost')


            column_labels = {'hotel_name':'Hotel Details'}
            column_list = ('hotel_name','website')
            column_searchable_list = ('city',)
            column_filters = (FilterCost(Table.Hotel.deluxe_room,'Cost'),'state')

1 个答案:

答案 0 :(得分:0)

我做了以下工作并且有效:

加入: 来自flask.ext.admin.contrib.sqla导入过滤器

移除: 来自于flask.ext.admin.model导入过滤器AND class MyBaseFilter(filters.BaseFilter)

然后我继承了#34; filters.BaseSQLAFilter"在我的过滤器类中。

但是,我怎么能使用"类MyBaseFilter(filters.BaseFilter)",它仍然会抛出错误