如何解决Django-发布主键列表并使用其值导出多个CSV文件
我有一个TableView,用户可以在其中选择表中1到X的行数。
我使用一些jquery来收集所选行的主键并将其发送 值以POST形式返回到视图。 我想将这些PK导出到单独的csv文件中-每个PK的工作流程需要一个CSV。 我将CSV导出与单个PK一起使用到CSV,但是导出了PK列表以单独的CSV 不起作用,什么也没导出。
我正在使用django-import-export包来自定义csv的格式。 有大量的字段导出,所以我将尝试仅发布相关代码 从视图中。
从自己的网址路径调用此代码时,该代码适用于单个CSV导出:
def export_csv(request,pk):
slatedoc_resource = SlateDocResource()
queryset = SlateDoc.objects.filter(pk=pk)
dataset = slatedoc_resource.export(queryset)
item = SlateDoc.objects.get(pk=pk)
filename = f"{item.int_house_num}.csv"
response = HttpResponse(dataset.csv,content_type='text/csv')
response['Content-Disposition'] = f'attachment; filename={filename}'
return response
当我从TableView发布PK列表时,post()
方法将遍历PK
并将每个发送给上面显示的export_csv()
函数。但不会导出任何CSV文件。
如果有人看到我出了问题,我将非常感谢您的帮助。
def post(self,request,*args,**kwargs):
if request.method == 'POST':
pks = self.request.POST.get('pks') #pks passed as a string (14,11,16,12,19)
pkList = pks.split(",") #string split to create a list ['14','11','16','12','19']
try:
for pk in pkList:
request = HttpRequest()
request.method = "GET"
request.path = f"/slatedoc/{pk}/csv/"
request.resolver = f"ResolverMatch(\
func=slatedoc.views.export_csv,\
args=(),\
kwargs={'pk':{pk}},\
url_name=export-csv,\
app_names=[],\
namespaces=[],\
route=slatedoc/<int: {pk} > /csv/ \
)"
export_csv(request,pk) #sends HttpRequest() and pk to export_csv
except ValueError as e:
return JsonResponse(status=400)
return JsonResponse({"status": "ok"},status=204)
我可以确认PK已达到post()函数。
print(pks) = 14,19,17,18,20,15,21
我可以确认请求和pk已发送到export_csv()
从post()
发送到export_csv()
的请求
ResolverMatch( func=slatedoc.views.export_csv,args=(),kwargs=pk,url_name=export-csv,app_names=[],namespaces=[],route=slatedoc/<int: 14 > /csv/
)
export_csv()
收到的请求
method : GET
path: /slatedoc/14/csv/
pathInfo:
method: GET
resolver: None
content type: None
params: None
PK: 14
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。