非常简单的任务:一次生成30个xlsx文件(每月一个),并将其作为zip存档下载。 Xlsx文件具有相同的结构,只有差异是数据。
我认为这很容易,例如:
for date in dates:
report_data = ReportModel.objects.filter(date_id = date)
xlsx = generate_xlsx_file(report_data)
add_to_zip_archive(xlsx)
当然,这不是一个真正的代码,只是为了表达一些想法。 这种方法在Django中不起作用。我得到空文件(不是0kB,但是里面没有数据的有效Excel文件)。
当我这样做时:
report_data = ReportModel.objects.filter(date_id = date1)
xlsx = generate_xlsx_file(report_data)
add_to_zip_archive(xlsx)
report_data = ReportModel.objects.filter(date_id = date2)
xlsx = generate_xlsx_file(report_data)
add_to_zip_archive(xlsx)
report_data = ReportModel.objects.filter(date_id = date3)
xlsx = generate_xlsx_file(report_data)
add_to_zip_archive(xlsx)
report_data = ReportModel.objects.filter(date_id = date4)
xlsx = generate_xlsx_file(report_data)
add_to_zip_archive(xlsx)
它有效。我有30个文件充满了数据。
是的,我读过这个:https://docs.djangoproject.com/en/dev/ref/models/querysets/#when-querysets-are-evaluated我不知道出了什么问题。 列表:
report_data = list(ReportModel.objects.filter(date_id = date))
没有帮助, report_data
每次使用FOR循环时它都是空的。
所以,我的代码中必须写30次相同的内容?有一些变通方法,隐藏功能?如果没有,它看起来真的是一个很大的失败。