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
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
File details
Details for the file django-csv-export-view-1.1.0.tar.gz
.
File metadata
- Download URL: django-csv-export-view-1.1.0.tar.gz
- Upload date:
- Size: 9.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.6.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
a2f2e8161c0098d43fc818caa52928e4a9a1e80d8a037e2a3fd7aea5c3141d71
|
|
MD5 |
79b27eace8b1c234b243a8a03ee0a880
|
|
BLAKE2b-256 |
a796c56aa524e890f653e76249f8b402c56b48122c63252e963feb9e0b1b4947
|