a CSV exporter for django querysets.
This tool was created out of repeatedly needing to do the following in django:
- write CSV data that is based on simple querysets.
- automatically encode unicode characters to utf-8
- create a shortcut to render a queryset to a CSV HTTP response
- add a time/datestamping mechanism to CSV filenames
For more detailed documentation, please read this blog post.
Run:
pip install django-queryset-csv
Supports Python 2.6 and 2.7, Django 1.5 and 1.6.
Perform all filtering and field authorization in your view using .filter() and .values().
Then, use render_to_csv_response to turn a queryset into a respone with a CSV attachment.
Pass it a QuerySet or ValuesQuerySet instance:
from djqscsv import render_to_csv_response
def csv_view(request):
qs = Foo.objects.filter(bar=True).values('id', 'bar')
return render_to_csv_response(qs)
Foreign keys are supported natively using ValuesQuerySet in Django. Simply use the __ technique as
you would in the Django ORM when you pass args to the .values() method.
models.py:
from django.db import models
class Food(models.Model):
name = models.CharField(max_length=20)
class Person(models.Model):
name = models.CharField(max_length=20)
favorite_food = models.ForeignKey(Food)
views.py:
from djqscsv import render_to_csv_response
def csv_view(request):
people = Person.objects.values('name', 'favorite_food__name')
return render_to_csv_response(people)