Skip to content

Instantly share code, notes, and snippets.

@niktto
Created August 6, 2015 09:27
Show Gist options
  • Save niktto/028a2adc5ad943ff9702 to your computer and use it in GitHub Desktop.
Save niktto/028a2adc5ad943ff9702 to your computer and use it in GitHub Desktop.
Using Django Rest Framework to ease csv generation
from django.db import models
class SomeModel(models.Model):
email = models.EmailField()
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
from rest_framework import serializers
from .models import SomeModel
class SomeModelSerializer(serializers.ModelSerializer):
class Meta:
model = SomeModel
fields = (
'email',
'first_name',
'last_name',
)
import csv
from django.views.generic import View
from django.http import HttpResponse
from .serializers import SomeModelSerializer
from .models import SomeModel
class SomeModelCSVExportView(View):
serializer_class = SomeModelSerializer
def get_serializer(self, queryset, many=True):
return self.serializer_class(
queryset,
many=many,
)
def get(self, request, *args, **kwargs):
response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename="export.csv"'
serializer = self.get_serializer(
SomeModel.objects.all(),
many=True
)
header = SomeModelSerializer.Meta.fields
writer = csv.DictWriter(response, fieldnames=header)
writer.writeheader()
for row in serializer.data:
writer.writerow(row)
return response
@mavhungutrezzy
Copy link

this just helped me to solve some issues I was having

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment