Как сделать фильтрацию не модельных данных в flask-admin - PullRequest
0 голосов
/ 29 апреля 2019

Мне нужно сделать вид панели инструментов в flask-admin, который будет использовать данные, полученные из внешнего API.Я уже написал функции, которые получают диапазоны дат и возвращают данные из этого диапазона.Я должен использовать BaseView, вероятно, но я не знаю, как на самом деле написать это, чтобы фильтры работали.Это пример функции, которую я должен использовать: charts = generate_data_for_dashboard('164', '6423FACA-FC71-489D-BF32-3A671AB747E3', '2018-03-01', '2018-09-01').Эти параметры должны быть выбраны из 3 различных выпадающих.До сих пор я знаю только, как визуализировать представления с предварительно закодированными данными, как это:

class DashboardView(BaseView):

    kwargs = {}

    @expose('/', methods=('GET',))
    def statistics_charts(self):
        user = current_user
        company = g.company
        offices = Office.query.filter_by(company_id=company.id)
        self.kwargs['user'] = user
        self.kwargs['company'] = company
        charts =  generate_data_for_dashboard('164', '6423FACA-FC71-489D-BF32-3A671AB747E3', '2018-03-01', '2018-09-01')
        self.kwargs['chart1'] = charts[0]
        self.kwargs['chart2'] = charts[1]

        return self.render('stats/dashboard.html', **self.kwargs)

Но мне нужна какая-то форма для ее фильтрации.Кроме того, в раскрывающемся списке фильтра даты должны быть указаны динамические параметры: current_week, last_week, current_month, last_month, last_year.Не знаю с чего начать.

1 Ответ

0 голосов
/ 29 июня 2019

Вы должны использовать WTForms для создания формы. Затем вам нужно решить, хотите ли вы получать данные при отправке или без перезагрузки страницы. В первом случае вы можете просто вернуть извлеченную информацию на странице ответа в представлении statistics_charts . Но если вы хотите, чтобы данные обновлялись без перезагрузки, вам нужно будет использовать JavaScript для отслеживания изменений полей формы, отправить запрос AJAX в API, а затем интерпретировать полученный JSON и обновлять графики и таблицы панели мониторинга по мере необходимости.

Я не использовал его, но в этом уроке говорится, что вы можете использовать Dash для существенных частей этой задачи, в то время как в основном пишите на Python. Так что это может быть что-то проверить. Существует также flask_jsondash , который может работать для вас.

...