【问题标题】:django: download filtered data as csvdjango:将过滤后的数据下载为 csv
【发布时间】:2021-12-13 11:34:48
【问题描述】:

嘿嘿!

我想将我的数据下载为 csv 文件。 我的问题是我无法在下载的 csv 中应用我的过滤器,它总是会给我整个列表。

我尝试连接这两个功能,但它没有按预期工作。但它们都各自运行良好。

有人知道如何实现吗?或者知道我做错了什么?

任何帮助表示赞赏! :)

# views.py

def download_csv(request):
    institutions = Institution.objects.all()
    filter = InstitutionFilter(request.GET, queryset=institutions).qs

    response = HttpResponse(content_type='text/csv')
    response['Content-Disposition'] = 'attachment; filename="institutions.csv"'

    writer = csv.writer(response)

    writer.writerow(['Name', "Abbreviation", "Parent Institution", "Phone Number"])

    for institution in filter.values_list('name', 'abbreviation', 'parent_institution__name', 'contact_details'):
        writer.writerow(institution)

    return response
# filters.py

class InstitutionFilter(django_filters.FilterSet):

    name = CharFilter(field_name="name", lookup_expr="icontains")

    class Meta:
        model = Institution
        fields = "__all__"

【问题讨论】:

    标签: django django-views django-templates export-to-csv django-filters


    【解决方案1】:

    我必须将过滤器参数添加到 url 以使它们正常工作。所以解决方案在于模板而不是视图:)

    <div class="col">
                <a href="{% url 'csv_download:download_institutions' %}?{{ request.GET.urlencode }}">Download CSV</a>
    </div>
    

    编辑:

    #csv_download/urls.py
    app_name = "csv_download"
    urlpatterns = [
        path("export-institution/", download_csv_institution, name="download_institutions"),
    ]
    
    # general urls.py
    
    urlpatterns = [
        path("admin/", admin.site.urls, name="admin"),  # admin site
        path("download_csv/", include("csv_download.urls")),  # download app
    ]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-01
      • 2017-05-26
      • 2012-01-03
      • 1970-01-01
      • 1970-01-01
      • 2021-08-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多