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 using the familiar
model
andfields
/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:
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 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:
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:
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:
@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
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
Built Distribution
File details
Details for the file django-csv-export-view-0.5.0.tar.gz
.
File metadata
- Download URL: django-csv-export-view-0.5.0.tar.gz
- Upload date:
- Size: 9.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.18.2 setuptools/40.4.1 requests-toolbelt/0.8.0 tqdm/4.15.0 CPython/3.4.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
b9828ca2f3eafec9568b04f72f4ca7de489aede9fa922f44af9a9718382bd9ac
|
|
MD5 |
d2891482433a7a3358458c11635a5378
|
|
BLAKE2b-256 |
072d34892416cb2da1ee16c9b977ccb9623b0b1362916f7b87894ebd6efa598e
|
File details
Details for the file django_csv_export_view-0.5.0-py2.py3-none-any.whl
.
File metadata
- Download URL: django_csv_export_view-0.5.0-py2.py3-none-any.whl
- Upload date:
- Size: 7.0 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.18.2 setuptools/40.4.1 requests-toolbelt/0.8.0 tqdm/4.15.0 CPython/3.4.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
443698171c7b257bb3de51a5f1b686137b4a3693a204d7e0fa45274435bc14c8
|
|
MD5 |
588194aa4cfc704e842d13051e0a15c2
|
|
BLAKE2b-256 |
3a40960c04bc209f88afa0872d35b684626553d94fa5c665efe2a43e9ce56e56
|