如何下载 CSV 格式的自定义查询集?
How to download a custom queryset in CSV format?
class ExportPlacesView(TemplateView):
@method_decorator(csrf_exempt)
def dispatch(self, request, *args, **kwargs):
return super(ExportPlacesView, self).dispatch(request, *args, **kwargs)
def post(self, request, *args, **kwargs):
print request.POST
places_list=[]
pk_list=[]
if request.POST.get('area_choice')!= "all":
selected_areas=self.request.POST.getlist('area_choice')
print selected_areas
areas = Area.objects.filter(pk__in=selected_areas)
for area in areas:
places_list.append(Fizzer.objects.filter(coordinates__intersects=area.polygon))
for place in places_list:
for p in place:
pk_list.append(p.pk)
self.places=Fizzer.objects.filter(pk__in=pk_list)
else:
self.places=Fizzer.objects.all()
return self.places
这是我过滤名为 Fizzer
的模型的视图。结果过滤的查询集是 sel.places
。如何使用 [=17] 下载 CSV 格式的查询集 self.places
=] 在 html
要生成的基本伪代码和 return csv:
import csv
from django.http import HttpResponse
def csv(self):
response = HttpResponse(content_type='text/csv')
filename = u"fizzer.csv"
response['Content-Disposition'] = u'attachment; filename="{0}"'.format(filename)
writer = csv.writer(
response,
delimiter=';',
quotechar='"',
quoting=csv.QUOTE_ALL
)
for f in Fizzer.objects.all():
writer.writerow([f.foo, f.bar])
return response
主题演讲:
您必须创建具有 text/csv
内容类型的 HttpResponse
对象
使用 Python 的 csv
模块生成您的 .csv
将查询集转换为 csv 值
return 回应
class ExportPlacesView(TemplateView):
@method_decorator(csrf_exempt)
def dispatch(self, request, *args, **kwargs):
return super(ExportPlacesView, self).dispatch(request, *args, **kwargs)
def post(self, request, *args, **kwargs):
print request.POST
places_list=[]
pk_list=[]
if request.POST.get('area_choice')!= "all":
selected_areas=self.request.POST.getlist('area_choice')
print selected_areas
areas = Area.objects.filter(pk__in=selected_areas)
for area in areas:
places_list.append(Fizzer.objects.filter(coordinates__intersects=area.polygon))
for place in places_list:
for p in place:
pk_list.append(p.pk)
self.places=Fizzer.objects.filter(pk__in=pk_list)
else:
self.places=Fizzer.objects.all()
return self.places
这是我过滤名为 Fizzer
的模型的视图。结果过滤的查询集是 sel.places
。如何使用 [=17] 下载 CSV 格式的查询集 self.places
=] 在 html
要生成的基本伪代码和 return csv:
import csv
from django.http import HttpResponse
def csv(self):
response = HttpResponse(content_type='text/csv')
filename = u"fizzer.csv"
response['Content-Disposition'] = u'attachment; filename="{0}"'.format(filename)
writer = csv.writer(
response,
delimiter=';',
quotechar='"',
quoting=csv.QUOTE_ALL
)
for f in Fizzer.objects.all():
writer.writerow([f.foo, f.bar])
return response
主题演讲:
您必须创建具有
text/csv
内容类型的HttpResponse
对象使用 Python 的
csv
模块生成您的 .csv将查询集转换为 csv 值
return 回应