Куда поступает код query.filter в представлении Flask-AppBuilder? - PullRequest
0 голосов
/ 05 сентября 2018

Предположим, у нас есть следующее простое представление в Flask-AppBuilder:

class Table_AView(ModelView):
    datamodel = SQLAInterface(Table_A)
    label_columns = {'Field_A':'A'}
    list_columns = ['Field_A']

Мы хотим, чтобы столбец, содержащий все данные из Field_A, возвращал все поля, равные «некоторому тексту».

Предполагая, что приведенный ниже запрос верен, где в нашем коде выше мы разместили бы эту строку кода для достижения желаемого результата?

result = session.query(Table_A).filter_by(Field_A = 'some text').all()

Поскольку реализация использует Flask-appbuilder, обычные решения, применяемые к flask и sqlalchemy, похоже, не реализуются одинаково.

1 Ответ

0 голосов
/ 08 сентября 2018

После долгих копаний flask-appbuilder использует свой собственный класс фильтра , чтобы вы могли фильтровать свои просмотры.

Все классы упоминаются здесь на GitHub: Список классов фильтра колб

Также обратите внимание на разницу между FilterEqual и FilterEqualFunction здесь: В чем разница между: FilterEqual и FilterEqualFunction?

Для других настроек и первого порта вызова Flask-appbuilder перейдите прямо к Справочнику по API , где вы найдете несколько примеров filterclass в действии.

По сути, это очень просто. В коде views.py в классе ModelView, который вы хотите отфильтровать, просто добавьте:

base_filters = [['field_column_name', FilterEqual, 'abc']]

Это покажет только те строки, где переменная field_column_name равна abc.

Надеюсь, это кому-нибудь поможет, потому что мне понадобилось почти (вздох) две недели, чтобы понять это ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...