0
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 .а resultent отфильтрованный querset является sel.places .Как скачать QuerySet self.places в формате CSV, используя ссылку в HTMLКак загрузить пользовательский запрос в формате CSV?

ответ

1

Basic псевдокод для создания и возврата 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 

Keynotes:

  • Вы должны создать HttpResponse объект с типом text/csv контента

  • сгенерировать файл CSV с csv модулем Питона

  • новообращенный QuerySet в CSV значения

  • обратный ответ

Смежные вопросы