擅长:python、mysql、java
<p>IMHO,最好是将它们组合起来,并从显式queryset生成CSV数据。然后可以将其重写为一般的内容,如(未经测试):</p>
<pre><code>def export_to_csv(request, queryset, fields):
response = ...
writer = csv.writer(response)
for obj in queryset:
writer.writerow([getattr(obj, f) for f in fields])
return response
</code></pre>
<p>你可以这样使用:</p>
<pre><code>def my_view(request):
calls = Call.objects.all()
return export_to_csv(request, calls, fields = ('calldate', 'src', 'dst'))
</code></pre>
<p>--</p>
<p>您提供的示例代码假设在会话数据中设置了QuerySet,这可能会导致大量的错误和安全问题。如果您将会话存储在数据库中,您可能最终会读取数据,只是以一种效率低得多的形式将其写回。</p>