已经有一些关于在 Django 视图中生成 CSV 文件的线程,但没有一个真正适合我的情况(并且为我工作)。
由于我为我的最终用户创建了一种查询构建器,它允许他们选择查询集中包含哪些字段,因此选择的字段可能因查询而异,因此我无法“硬”代码'我的表格标题等:
我的模型.py
class Customers(models.Model):
firstname = models.CharField(max_length=100)
middlename = models.CharField(max_length=100)
lastname = models.CharField(max_length=100)
nickname = models.CharField(max_length=100)
基本上我有 1 个字典和 2 个构建查询集的数组,这是通过我的 request.POST 进来的。
customers = Customers.objects.all().filter(**filargs).order_by(*ordargs).values(*selargs)
例如,最终用户只想选择“名字”和“姓氏”字段,我只想生成如下所示的 CSV
First Name Last Name
John Johnson
Ted Samson
正如我从 Django 文档中看到的,您可以使用以下代码创建行
writer.writerow(['First Name','Last Name'])
但是,由于查询集中选择的字段可能因查询而异,因此我需要一种动态的方式来执行此操作。我尝试了以下方法,但似乎没有用。
writer.writerow(selargs) << selargs being my select field list
关于编写实际记录(不是字段名称),我尝试了类似的方法,但显然我得到的输出不正确。
for customer in customers:
for value in customer:
writer.writerow(value)
但正如您所期望的那样,这为每条记录中的每个字段值提供了单独的一行。是否有某种“write.writecell”或类似的东西?
作为帮助将不胜感激。我确信有一个简单的解决方案。
谢谢,