Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/saritasa-nest/django-import-export-extensions

django-import-export-extensions
https://github.com/saritasa-nest/django-import-export-extensions

celery csv django django-import-export import-export json python xlsx

Last synced: 8 days ago
JSON representation

django-import-export-extensions

Awesome Lists containing this project

README

        

===============================
django-import-export-extensions
===============================

.. image:: https://github.com/saritasa-nest/django-import-export-extensions/actions/workflows/checks.yml/badge.svg
:target: https://github.com/saritasa-nest/django-import-export-extensions/actions/workflows/checks.yml
:alt: Build status on Github

.. image:: https://coveralls.io/repos/github/saritasa-nest/django-import-export-extensions/badge.svg?branch=main
:target: https://coveralls.io/github/saritasa-nest/django-import-export-extensions?branch=main
:alt: Test coverage

.. image:: https://img.shields.io/pypi/pyversions/django-import-export-extensions
:target: https://pypi.org/project/django-import-export-extensions/
:alt: Supported python versions

.. image:: https://img.shields.io/badge/django--versions-4.0_%7C_4.1_%7C_4.2_%7C_5.0-blue
:target: https://pypi.org/project/django-import-export-extensions/
:alt: Supported django versions

.. image:: https://readthedocs.org/projects/django-import-export-extensions/badge/?version=latest
:target: https://django-import-export-extensions.readthedocs.io/en/latest/?badge=latest
:alt: Documentation Status

.. image:: https://static.pepy.tech/personalized-badge/django-import-export-extensions?period=month&units=international_system&left_color=gray&right_color=blue&left_text=Downloads/month
:target: https://pepy.tech/project/django-import-export-extensions
:alt: Downloading statistic

Description
-----------
``django-import-export-extensions`` extends the functionality of
`django-import-export `_
adding the following features:

* Import/export resources in the background via Celery
* Manage import/export jobs via Django Admin
* DRF integration that allows to work with import/export jobs via API
* Support `drf-spectacular `_ generated API schema
* Additional fields and widgets (FileWidget, IntermediateManyToManyWidget, IntermediateManyToManyField)

Installation
------------

To install ``django-import-export-extensions``, run this command in your terminal:

.. code-block:: console

$ pip install django-import-export-extensions

Add ``import_export`` and ``import_export_extensions`` to ``INSTALLED_APPS``

.. code-block:: python

# settings.py
INSTALLED_APPS = (
...,
"import_export",
"import_export_extensions",
)

Run ``migrate`` command to create ImportJob/ExportJob models and
``collectstatic`` to let Django collect package static files to use in the admin.

.. code-block:: shell

$ python manage.py migrate
$ python manage.py collectstatic

Usage
-----

Prepare resource for your model

.. code-block:: python

# apps/books/resources.py
from import_export_extensions.resources import CeleryModelResource

from .. import models

class BookResource(CeleryModelResource):

class Meta:
model = models.Book

Use ``CeleryImportExportMixin`` class and set ``resource_class`` in admin model
to import/export via Django Admin

.. code-block:: python

# apps/books/admin.py
from django.contrib import admin

from import_export_extensions.admin import CeleryImportExportMixin

from .. import resources

@admin.register(models.Book)
class BookAdmin(CeleryImportExportMixin, admin.ModelAdmin):
resource_class = resources.BookResource

Prepare view sets to import/export via API

.. code-block:: python

# apps/books/api/views.py
from .. import resources

from import_export_extensions.api import views

class BookExportViewSet(views.ExportJobViewSet):
resource_class = resources.BookResource

class BookImportViewSet(views.ImportJobViewSet):
resource_class = resources.BookResource

Don't forget to `configure Celery `_
if you want to run import/export in background

Links:
------
* Documentation: https://django-import-export-extensions.readthedocs.io.
* GitHub: https://github.com/saritasa-nest/django-import-export-extensions/
* PyPI: https://pypi.org/project/django-import-export-extensions/

License:
--------
* Free software: MIT license