好的,所以我在从数据生成CSV文件时遇到问题。
我有一个大约6,000个对象的列表。这些对象就像自定义表单, 所以每个对象都有许多与之关联的字段。例如,请求可以包括姓名,年龄,电话号码等。在这种情况下,每个请求都具有相同的字段。因此,每个表单与这些字段具有一对多的关系。
所以我将这个自定义表单和一些标准的东西作为ValuesQuerySet从中抓取,然后抓取与此表单关联的所有字段。并将它们添加到每一行。最后我使用字典编写器将数据写入csv。这一切都很好,但性能很糟糕。使用大约15个自定义字段执行我的6,000条记录大约需要90秒。(这会触发超时错误)。我需要一些方法来加快速度。
我的代码看起来像这样....
forms = SomeForm.objects.filter(created_by=user).values('value1', 'value2', 'etc...')
for form in forms:
id = form['id']
fields = Fields.objects.filter(Form_id=id).values('value', 'field__label')
for field in fields:
label = field['form_field__label']
value = field['value']
form[label] = value
writer = csv.DictWriter(response, fieldnames=fieldnames)
writer.writeheader()
writer.writerows(forms)
删除了一些代码,但这是它的要点。 如果你能想到加快速度,或者可能采用另一种方式来处理它,我将非常感激。
答案 0 :(得分:0)
Ya我最终采取了cdvv7788的建议并将其作为芹菜任务。谢谢你们