【问题标题】:django export to csv only exports data from current pagedjango export to csv 仅从当前页面导出数据
【发布时间】:2020-05-07 10:58:04
【问题描述】:

我正在尝试将 django Listview 导出到 csv。我为 ListView 创建了一个视图,它具有自定义 get_queryset() 函数来创建过滤结果。 Listview 本身使用分页来显示数据。

对于导出,我创建了一个子类,继承了 Listview,带有自定义 url 和 csv 模板文件。

Listview 和导出过程本身工作得很好,但我没有在 csv 中获得完整的查询集,而只有分页 Listview 的第一页上存在的数据。

有什么我缺少的建议吗?

【问题讨论】:

    标签: django csv listview export


    【解决方案1】:

    我建议你制作一个基本的抽象视图,它没有放在 urlpatterns 中,具有通用逻辑:

    class MyListView(ListView):
        model = Foo
    
        def get_queryset(...):
            ...
    

    然后为您的 CSV 准备一个具有任何不同功能的文件:

    class MyCSVListView(MyListView):
        ...
    

    还有一个用于您的常规视图:

    class MyPaginatedListView(MyListView):
        paginate_by = 100
    

    这样,您应该避免来自其他视图的任何副作用。

    【讨论】:

    • 好的,改成建议的设计。现在我有一种相反的问题,意味着完整的查询集被导出。因为我在基本视图的 get_queryset 函数中应用了来自 url 参数的过滤器和限制。浏览器中的分页视图使用 get_queryset 函数返回的 object_list 完成所有操作。但是,这些过滤器和限制在导出到 csv 时似乎会丢失
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-02
    • 1970-01-01
    • 2023-04-05
    • 2011-12-01
    • 1970-01-01
    • 2020-09-23
    • 2011-06-25
    相关资源
    最近更新 更多