如何在将django查询集导出到csv时写入行名

  • 本文关键字:csv django 查询 python django csv
  • 更新时间 :
  • 英文 :


下面的函数正确地导出到csv中,但缺少一点是这些值的标头。

如何写入这些值的标头?

我有一个相当大的查询集,所以我按照django文档的建议使用StreamingHttpResponse,但找不到添加这些值的头的解决方案。

class Echo:
def write(self, value):
return value

def some_streaming_csv_view(request):
rows = MyModel.objects.values_list("value1", "value2")
pseudo_buffer = Echo()
writer = csv.writer(pseudo_buffer)
writer.writerow(["name1", "name2"]) # didn't work
response = StreamingHttpResponse(
(writer.writerow(row) for row in rows),
status=200,
content_type="text/csv",
)
response["Content-Disposition"] ='attachment; filename=filname.csv'
return response

为了能够添加您正在尝试的头部分,您应该将它们写入pseudo_buffer并生成它们。

def iter_content(rows, headers):
pseudo_buffer = Echo()
writer = csv.writer(pseudo_buffer)
yield pseudo_buffer.write(headers)
for row in rows:
yield writer.writerow(row)

然后像这样使用:

response = StreamingHttpResponse(
(iter_content(rows, headers)),
status=200,
content_type="text/csv",
)

相关内容

  • 没有找到相关文章

最新更新