Skip to main content

django-export-csv is a reusable Django application which provides generic View class for creating and rendering CSV.

Project description

django-export-csv

CI status Coverage Status Requirements Status License Status

django-export-csv is a reusable Django application for which provides generic views for downloading CSV files.

Installation

To get started using django-export-csv simply install it with

pip install django-csv-export

Usage

Add 'export_csv' to INSTALLED_APPS settings of the project.

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    ...
    ...
    'export_csv',
]

Subclass ExportCSV in views.py file and provide model attribute.

from export_csv.views import ExportCSV

from .models import Account

class AccountCSV(ExportCSV):
    """View for creating and rendering CSV of all Account model instances."""
    model = Customer

In urls.py, add url pointing to the view class AccountCSV declared above.

from .views import AccountCSV

urlpatterns = [
    (r'^account_csv/$', AccountCSV.as_view(), name='account-csv'),
]

That’s it. It will render a CSV file containing all the fields of all the instances of Account model.

Customizing ExportCSV View

Note

All examples follow from the models in the example project.

Use custom queryset

By default, all instances of the model are included in (the queryset and) the CSV.

To provide a custom queryset, override get_queryset method to return custom queryset.

class AccountCSV(ExportCSV):
    model = Account

    def get_queryset(self):
        return Account.object.filter(is_active=True)

Only include certain fields of the model

It is possible that only some fields of the model are needed.

This can be achieved in two ways:

  • provide field_names list
  • override get_field_names method
class AccountCSV(ExportCSV):
    model = Account
    field_names = ['owner', 'account_no', 'balance']
class AccountCSV(ExportCSV):
    model = Account

    def get_field_names(self):
        return ['owner', 'account_no', 'balance']

Provide filename

By default, the CSV rendered will have filename <model>_list.csv. For example, for Account model the filename will be account_list.csv.

Custom file name can be provided using two ways.

  • provide filename attribute
  • Override get_filename method.
class AccountCSV(ExportCSV):
    model = Account
    filename = 'active_account_list.csv'

    def get_queryset(self):
        return Account.object.filter(is_active=True)
class AccountCSV(ExportCSV):
    model = Account

    def get_queryset(self):
        return Account.object.filter(is_active=True)

    def get_filename(self):
        return 'active_account_list.csv'

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for django-csv-export, version 0.0.3
Filename, size File type Python version Upload date Hashes
Filename, size django_csv_export-0.0.3-py2.py3-none-any.whl (8.3 kB) File type Wheel Python version py2.py3 Upload date Hashes View
Filename, size django-csv-export-0.0.3.tar.gz (6.3 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page