使用Django导出查询集数据,而无需重新查询数据

时间:2019-06-27 09:10:18

标签: python django postgresql django-queryset export-to-csv

我已经建立了一个从PostgreSQL数据库查询的Django应用。导出模型中的所有数据似乎相对简单,但是如果我只想导出返回的查询集中的数据,该怎么办。

目前,我正在通过在页面上有一个按钮并在用户希望导出数据时更改url来进行管理。我正在渲染的视图中的代码如下。

def export_data(request,pk):
    resource_class = MDPResource()
    queryset = MDP.objects.filter(mdp_id=pk)
    dataset = person_resource.export(queryset)
    response = HttpResponse(dataset.csv, content_type='text/csv')
    response['Content-Disposition'] = 'attachment; filename="mdpbasic.csv"'
    return response

但是,这意味着我将在用户最初打开页面时进行一次查询,然后在用户希望导出我已经在其中查询过的数据时进行第二次查询(实际上是额外的2次)。前一个视图。

此外,在页面的一部分中,我还将Q模型用于复杂过滤。在这种情况下,上面的方法不足以导出数据(我不想重建查询)。

我也不想将数据写到文件中(如果我可以帮助的话),因为那样一来,一旦用户导出了数据,就会出现必须使用os删除它的问题。

Generating CSV file with Django (dynamic content)

我已经检查了这个问题,但是我不确定将字典传递给urlpattern的方式如何,并且看起来查询仍然要多进行一次(比我当前的方法少一遍)。 / p>

我不知道我是否应该为此特定目的签出应用程序。我研究了django-queryset-csv和django-import-export等夫妇,但它们似乎都没有达到我提到的目的。

django: export current queryset to csv by button click in browser

我已经看到了这个使用基于类的视图的示例,但是我想看看是否有一种方法可以使用基于函数的视图,因此我不必将所有视图都迁移到基于类的视图一个。

0 个答案:

没有答案