An open API service indexing awesome lists of open source software.

https://github.com/intouch-smartwater/queryset-csv

CSV QuerySet serialization for the Django framework
https://github.com/intouch-smartwater/queryset-csv

csv django python queryset serializer

Last synced: about 2 months ago
JSON representation

CSV QuerySet serialization for the Django framework

Awesome Lists containing this project

README

          

============
Queryset CSV
============

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

.. image:: https://img.shields.io/github/license/intouch-smartwater/queryset-csv.svg
:target: https://github.com/intouch-smartwater/queryset-csv
:alt: GitHub

.. image:: https://img.shields.io/pypi/v/intouch_queryset_csv.svg
:target: https://pypi.org/project/intouch-queryset-csv/
:alt: 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:

#. The function :code:`export_model_as_csv` can be added to your custom admin
class's actions
#. The :code:`CsvExporterAdmin` class can be inherited to provide the action
#. Setting :code:`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?
--------------------------------------------------------------------

#. 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.
#. 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.
#. 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.
#. 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
--------
#. :code:`CSV_EXPORT_ADMIN_ACTION_AVAILABLE` - If True, adds the CSV Export
action to all admin pages by default
#. :code:`QUERYSET_CSV_DATE_FORMAT` - Set the format to use when outputting
datetime.datetime objects, defaults to :code:`"%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.