Skip to main content

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:

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/

https://github.com/mjumbewu/django-rest-framework-csv

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-csv-export-view-1.0.0.tar.gz (9.7 kB view details)

Uploaded Source

Built Distribution

django_csv_export_view-1.0.0-py2.py3-none-any.whl (7.9 kB view details)

Uploaded Python 2Python 3

File details

Details for the file django-csv-export-view-1.0.0.tar.gz.

File metadata

  • Download URL: django-csv-export-view-1.0.0.tar.gz
  • Upload date:
  • Size: 9.7 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

Hashes for django-csv-export-view-1.0.0.tar.gz
Algorithm Hash digest
SHA256 eff05b155cba3387808852d09497229e7bfe7bcb3e43b67455f38e4f342f9a9d
MD5 4ec130f414b671c4c8ad89d1d193aacf
BLAKE2b-256 bbf9db660f0c1889d185810d32b8b53c45fed1bf85628095bb67b1abbb0d1edd

See more details on using hashes here.

File details

Details for the file django_csv_export_view-1.0.0-py2.py3-none-any.whl.

File metadata

  • Download URL: django_csv_export_view-1.0.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 7.9 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

Hashes for django_csv_export_view-1.0.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 8e6731a534c8c14283976910f2737448d30cc44ba6b369670ceacb3d94229be4
MD5 d3e0ba11851b10f7fc1a5177c1c89d27
BLAKE2b-256 edd0aa183d2d04247b1c52e6293bbda983bffb3f7ffda54d2fc03ca025a111c9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page