如何在循环中强制queryset求值?

2024-04-23 09:09:49 发布

您现在位置:Python中文网/ 问答频道 /正文

非常简单的任务:一次生成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文件,里面没有数据)。

当我这样做的时候:

^{pr2}$

它起作用了。我有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次同样的代码?有一些解决办法,隐藏的功能?如果看起来不算太大的话。


Tags: 文件数据代码reportiddatadateobjects