Skip to content

CSV QuerySet serialization for the Django framework

License

MIT, MIT licenses found

Licenses found

MIT
LICENSE
MIT
COPYING
Notifications You must be signed in to change notification settings

intouch-smartwater/queryset-csv

Repository files navigation

Queryset CSV

https://travis-ci.org/intouch-smartwater/queryset-csv.svg?branch=master GitHub PyPI

Queryset CSV is a simple module to allow Django Querysets to be exported as CSV files.

Installation

pip install intouch-queryset-csv

Then add the app to your installed apps

intouch.queryset_csv

Usage

There are several ways to use the Queryset csv exporter.

Render to response

The most basic usage is to call the function

queryset_as_csv_response

This function accepts a queryset as a parameter, along with a filename and whether the file is to be streamed. It returns an HTTPResponse object, so should be called at the end of a view function to offer the download to the client.

When using this method, field selections made using values() and values_list() are respected - only selected fields will appear, and they will appear in the order they are specified. Querysets using defer() or only() will still return all fields, but they will be lazily loaded as the output file is generated.

Admin Action

An action is provided for the Django admin site. There are 3 ways of including it:

  1. The function export_model_as_csv can be added to your custom admin
    class's actions
  2. The CsvExporterAdmin class can be inherited to provide the action
  3. Setting CSV_EXPORT_ADMIN_ACTION_AVAILABLE=True in your django
    settings module will make the action available to all registered admin classes.

The action will simply export all objects of the selected model to csv (as a stream)

Why create this code rather than use an existing CSV export project?

  1. Licensing - Other CSV export packages encountered are Licensed under the
    GNU GPL. The GPL is incompatible with the desired usage, so a this was written from scratch.
  2. Functionality - Existing CSV packages are not designed to handle very large
    querysets, the option to steam querysets is essential for models with thousands of entries.
  3. Simplicity - This package has no dependencies other than django itself, and
    the requirements are to be kept to a minimum in future versions (preferably solely django). It is also designed to require as little effort as possible to use.
  4. Currency - The package is written and tested using the latest versions of
    Python and Django. While it may work with older versions, no special effort will be expended to force compatibility with old versions.

Settings

  1. CSV_EXPORT_ADMIN_ACTION_AVAILABLE - If True, adds the CSV Export
    action to all admin pages by default
  2. QUERYSET_CSV_DATE_FORMAT - Set the format to use when outputting
    datetime.datetime objects, defaults to "%d-%m-%Y %H:%M:%S"

Tested Versions

Django versions 1.11-2.2 should be supported, Python 3 versions supported as per the Django releases.

About

CSV QuerySet serialization for the Django framework

Topics

Resources

License

MIT, MIT licenses found

Licenses found

MIT
LICENSE
MIT
COPYING

Stars

Watchers

Forks

Packages

No packages published

Languages