Skip to main content
 首页 » 编程设计

python之在使用 django-filter 进行过滤时如何将过滤后的值导出到 csv 文件中

2024年11月01日19lyhabc

我使用 django-filter 模块进行过滤。想要将结果导出到 CSV 文件中。

def bfs_version_filter(request): 
    version_obj = bfs_versions.objects.all() 
    filter_obj = version_filter(request.GET, queryset = version_obj) 
    response = HttpResponse(content_type = 'text/csv') 
    file_name = "version_filter"+str(date.today())+".csv" 
    response['Content-Disposition'] = 'attachment; filename = "'+ file_name +'"' #edited by vennilam 
    writer = csv.writer(response) 
    for i in filter_obj: 
        writer.writerow(i) 
    return response 

出现以下错误: /bfslite/version_filter/类型错误 'version_filter' 对象不可迭代

请您参考如下方法:

调用 FilterSet 子类的构造函数不会过滤查询集,它会构造该子类的对象。

您可以访问 .qs attribute [readthedocs.io]访问过滤后的查询集:

def bfs_version_filter(request): 
    version_obj = bfs_versions.objects.all() 
    filter_obj = version_filter(request.GET, queryset = version_obj)<b>.qs</b> 
    response = HttpResponse(content_type = 'text/csv') 
    file_name = "version_filter"+str(date.today())+".csv" 
    response['Content-Disposition'] = 'attachment; filename = "'+ file_name +'"' #edited by vennilam 
    writer = csv.writer(response) 
    for i in filter_obj: 
        writer.writerow(i) 
    return response