如何在flask-admin中过滤非模型数据

时间:2019-04-29 20:36:15

标签: flask flask-admin

我必须在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 :(得分:0)

您应该使用WTForms来构建表单。然后,您必须决定是要在“提交”中获取数据还是要不重新加载页面。在前一种情况下,您可以仅在响应页面in your statistics_charts view上返回获取的信息。但是,如果您希望不重新加载就更新数据,则需要使用JavaScript来跟踪表单字段更改,将AJAX请求发送到API,然后解释生成的JSON并根据需要更新仪表板图和表。

我还没有使用过它,但是本教程说,您可以使用Dash来完成此任务的大部分时间,而大多数时间都是用Python编写的。因此,这可能是需要检查的东西。还有flask_jsondash可能对您有用。