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
Hashes for django-csv-export-view-1.0.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | eff05b155cba3387808852d09497229e7bfe7bcb3e43b67455f38e4f342f9a9d |
|
MD5 | 4ec130f414b671c4c8ad89d1d193aacf |
|
BLAKE2b-256 | bbf9db660f0c1889d185810d32b8b53c45fed1bf85628095bb67b1abbb0d1edd |
Hashes for django_csv_export_view-1.0.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8e6731a534c8c14283976910f2737448d30cc44ba6b369670ceacb3d94229be4 |
|
MD5 | d3e0ba11851b10f7fc1a5177c1c89d27 |
|
BLAKE2b-256 | edd0aa183d2d04247b1c52e6293bbda983bffb3f7ffda54d2fc03ca025a111c9 |