Django class-based view for CSV exports
Project description
django-csv-export-view
A Django class-based view for CSV export.
Features
- Easy CSV exports by setting a Django
model
and afields
orexclude
iterable - Works with existing class-based view mixins for access control
- Generates Microsoft Excel friendly CSV by default
- Proper HTTP headers set for CSV
- Easy to override defaults as needed
- Easy integration into Django Admin
Installation
pip install django-csv-export-view
Quick Start
Examples:
from csv_export.views import CSVExportView 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.exclude(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 iterable 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:
from csv_export.views import CSVExportView 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:
from csv_export.views import CSVExportView 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:
from django.contrib import admin from csv_export.views import CSVExportView @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/
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size django-csv-export-view-1.1.0.tar.gz (9.9 kB) | File type Source | Python version None | Upload date | Hashes View |
Hashes for django-csv-export-view-1.1.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | a2f2e8161c0098d43fc818caa52928e4a9a1e80d8a037e2a3fd7aea5c3141d71 |
|
MD5 | 79b27eace8b1c234b243a8a03ee0a880 |
|
BLAKE2-256 | a796c56aa524e890f653e76249f8b402c56b48122c63252e963feb9e0b1b4947 |