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
======================
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Close
Hashes for django-csv-export-view-0.4.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0f375cfe1f2acf13236c0885c45e6492a21c763d354c2498c360a832938ca56b |
|
MD5 | 7d29c101108713be1d74f77e048cf170 |
|
BLAKE2b-256 | 527114fe74fa98508e961ccf38b4dbaa1444614ca503e6f6f498091f4c3ae435 |