Я не смог найти ни одного примера SQLAFilterConverter на практике, и я несколько озадачен тем, как правильно применять синтаксис.
Я хотел бы отфильтровать представлениениже, чтобы показать только Field_A
= null
или ''
(пусто), но я получаю builtins.TypeError TypeError: must be real number, not str
ошибку.
class Table_AView(ModelView):
datamodel = SQLAInterface(Table_AView)
label_columns = {'Field_A':'A'}
list_columns = ['Field_A']
base_filters = [['Field_A', FilterEqual, '']]
Я предполагаю, что это потому, что Field_A
необходимо преобразоватьв столбец, который имеет «поддерживаемый список фильтров, специфичных для SQLAlchemy», как упоминается в документации:
class SQLAFilterConverter(BaseFilterConverter):
"""
Class for converting columns into a supported list of filters
specific for SQLAlchemy.
"""
conversion_table = (('is_relation_many_to_one', [FilterRelationOneToManyEqual,
FilterRelationOneToManyNotEqual]),
('is_relation_one_to_one', [FilterRelationOneToManyEqual,
FilterRelationOneToManyNotEqual]),
('is_relation_many_to_many', [FilterRelationManyToManyEqual]),
('is_relation_one_to_many', [FilterRelationManyToManyEqual]),
('is_enum', [FilterEqual,
FilterNotEqual]),
('is_text', [FilterStartsWith,
FilterEndsWith,
FilterContains,
FilterEqual,
FilterNotStartsWith,
FilterNotEndsWith,
FilterNotContains,
FilterNotEqual]),
('is_binary', [FilterStartsWith,
FilterEndsWith,
FilterContains,
FilterEqual,
FilterNotStartsWith,
FilterNotEndsWith,
FilterNotContains,
FilterNotEqual]),
('is_string', [FilterStartsWith,
FilterEndsWith,
FilterContains,
FilterEqual,
FilterNotStartsWith,
FilterNotEndsWith,
FilterNotContains,
FilterNotEqual]),
('is_integer', [FilterEqual,
FilterGreater,
FilterSmaller,
FilterNotEqual]),
('is_float', [FilterEqual,
FilterGreater,
FilterSmaller,
FilterNotEqual]),
('is_numeric', [FilterEqual,
FilterGreater,
FilterSmaller,
FilterNotEqual]),
('is_date', [FilterEqual,
FilterGreater,
FilterSmaller,
FilterNotEqual]),
('is_boolean', [FilterEqual,
FilterNotEqual]),
('is_datetime', [FilterEqual,
FilterGreater,
FilterSmaller,
FilterNotEqual]),
)
Однако я не знаю, как применить эту таблицу преобразования к моему коду, так как я не понимаютребуемый синтаксис.