Skip to main content

Django class-based view for CSV exports

Project description

django-csv-export-view
======================

A Django class-based view for CSV export.

|Build Status|

Features
--------

- Easy CSV exports using the familiar ``model`` and ``fields`` /
``exclude`` pattern
- Works with your existing class-based view mixins for access control
- Generates Micosoft Excel friendly CSV by default
- Proper HTTP headers set for CSV
- Easy to override defaults as needed
- Easy itegration into Django Admin

Quick Start
-----------

Examples:

.. code:: python

class DataExportView(CSVExportView):
model = Data
fields = ('field1', 'field2__related_field', 'property1')

class DataExportView(CSVExportView):
model = Data
fields = '__all__'

class DataExportView(CSVExportView):
model = Data
exclude = ('id',)

def get_queryset(self):
queryset = super(DataExportView, self).get_queryset()
return queryset.filter(deleted=True)

class DataExportView(CSVExportView):
model = Data

def get_fields(self, queryset):
fields = ['username', 'email']
if self.request.user.is_superuser:
fields.append('birth_date')
return fields

| ``fields`` / ``exclude``: An interable of field names and properties.
You cannot set both ``fields`` and ``exclude``.
| ``fields`` can also be ``'__all__'`` to export all fields. Model
properties are not included when ``'__all__'`` is used.
| Related field can be used with ``__``. Override
``get_fields(self, queryset)`` for custom behaviour not supported by the
| default logic.

``model``: The model to use for the CSV export queryset. Override
``get_queryset()`` if you need a custom queryset.

Further Customization
---------------------

Examples:

.. code:: python

class DataExportView(CSVExportView):
model = Data
fields = '__all__'
header = False
specify_separator = False
filename = 'data-export.csv'

class DataExportView(CSVExportView):
model = Data
fields = '__all__'

def get_filename(self, queryset):
return 'data-export-{!s}.csv'.format(timezone.now())

| ``header`` - *boolean* - Default: ``True``
| Whether or not to include the header in the CSV.

| ``filename`` - *string* - Default: Dasherized version of
``verbose_name_plural`` from ``queryset.model``.
| Override ``get_filename(self, queryset)`` if a dynamic filename is
required.

| ``specify_separator`` - *boolean* - Default: ``True``
| Whether or not to include ``sep=<sepaator>`` as the first line of the
CSV file. This is useful for generating Microsoft
| Excel friendly CSV.

CSV Writer Options
------------------

Example:

.. code:: python

class DataExportView(CSVExportView):
model = Data
fields = '__all__'

def get_csv_writer_fmtparams(self):
fmtparams = super(DataExportView, self).get_csv_writer_fmtparams()
fmtparams['delimiter'] = '|'
return fmtparams

| Override ``get_csv_writer_fmtparams(self)`` and return a dictionary of
csv write format parameters. Default format
| parameters are: dialect='excel' and quoting=csv.QUOTE\_ALL. See all
available options in the Python docs:

https://docs.python.org/3.6/library/csv.html#csv.writer

Django Admin Integration
------------------------

Example:

.. code:: python

@admin.register(Data)
class DataAdmin(admin.ModelAdmin):
actions = ('export_data_csv',)

def export_data_csv(self, request, queryset):
view = CSVExportView(queryset=queryset, fields='__all__')
return view.get(request)

export_data_csv.short_description = 'Export CSV for selected Data records'

Contributions
-------------

Pull requests are happily accepted.

Alternatives
------------

https://github.com/django-import-export/django-import-export/

https://github.com/mjumbewu/django-rest-framework-csv

.. |Build Status| image:: https://travis-ci.org/benkonrath/django-csv-export-view.svg?branch=master
:target: https://travis-ci.org/benkonrath/django-csv-export-view

Project details


Download files

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

Source Distribution

django-csv-export-view-0.3.0.tar.gz (9.4 kB view details)

Uploaded Source

File details

Details for the file django-csv-export-view-0.3.0.tar.gz.

File metadata

File hashes

Hashes for django-csv-export-view-0.3.0.tar.gz
Algorithm Hash digest
SHA256 fd34726407b26a7a09265f026a83a4510668a6e128858fd24cf8c4991a0be7c5
MD5 b3f82f17ce346e283934f2b7915b2df0
BLAKE2b-256 f0603932f0fd396383087957bba25f45694cf49ada8d75d7d985634bf4ddcdcc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page