Django filter 从django表导出筛选的数据

Django filter 从django表导出筛选的数据,django-filter,django-import-export,Django Filter,Django Import Export,我正在使用django过滤器和django导入导出。我可以构建一个HTML表并使用django filter对其进行过滤,但我希望用户能够导出过滤后的表,而不是整个表。(也就是说,这不是通过管理功能实现的。) 我怀疑问题在于列表本身有一个视图,但导出在另一个视图中,并且我似乎无法将过滤后的查询集传递给导出视图,并且我无法确定如何在同一视图上进行导出和过滤。他们都收到了请求。我觉得我错过了一些非常基本的东西 在my app/views.py中: from django.http import Ht

我正在使用django过滤器和django导入导出。我可以构建一个HTML表并使用django filter对其进行过滤,但我希望用户能够导出过滤后的表,而不是整个表。(也就是说,这不是通过管理功能实现的。)

我怀疑问题在于列表本身有一个视图,但导出在另一个视图中,并且我似乎无法将过滤后的查询集传递给导出视图,并且我无法确定如何在同一视图上进行导出和过滤。他们都收到了请求。我觉得我错过了一些非常基本的东西

在my app/views.py中:

from django.http import HttpResponse
from django.shortcuts import render
from .filters import RoleFilter
from .models import Role
from .resources import RoleResource

from tablib import Dataset

def role_list(request):
    """list the roles and filter appropriately"""
    f = RoleFilter(request.GET, queryset=Role.objects.all())
    return render(request, 'app/rolelist.html', {'filter': f})

def export_filtered_roles(request):
    """export to csv"""
    f = RoleFilter(request.GET, queryset=Role.objects.all())
    dataset = RoleResource.export(f)
    response = HttpResponse(dataset.csv, content_type="text/csv")
    response['Content-Disposition'] = 'attachment;filename="roles.csv"'
    return response
我似乎无法接通。这个版本的代码给了我一个错误:RoleFilter对象没有“导出前”属性。如果使用
dataset=RoleResource.export(f.qs)
,则会出现相同的错误

关于如何将筛选器绑定到导出视图,有什么建议吗


附加信息:这是我正在使用的模板

<form method="get" action=".">
    {{ filter.form.as_p }}
    <input type="submit" value="Filter"/>
</form>

<table>... loops through filter.qs ...</table>
<a href="{% url 'roleexport' %}">Export Roles</a>

{{filter.form.as_p}
... 循环通过filter.qs。。。

这就是为什么我认为表单对象和导出功能之间存在断开连接的原因。我可以控制表单的导出吗?

我认为这行看起来不正确:

dataset = RoleResource.export(f)
您正在类上调用
export()
,而不是该类的实例

如果您尝试以下操作,会发生什么情况:

dataset = RoleResource().export(f.qs)

正如您所说,
export()
将queryset作为参数,而不是筛选器,因此请确保您是从筛选器传递qs,而不是从筛选器本身传递qs。

这看起来像是一种攻击,但它是有效的。我所要做的就是更改模板中的链接:

<a href="{% url 'roleexport' %}?{{request.GET.urlencode}}">Export Roles</a>


这适用于筛选列表和未筛选列表。

它不会给我错误,但会给我完整的数据集,而不是表中的筛选集。@Matthew Hegarty。帮帮我。