Skip to content

saritasa-nest/django-import-export-extensions

Repository files navigation

Django-import-export-extensions

PyPI - Python Versions PyPI - Django Versions PyPI

Build status on Github Test coverage Documentation Status

PyPI Downloads

Links

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:

pip install django-import-export-extensions

Add import_export and import_export_extensions to INSTALLED_APPS

# 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.

python manage.py migrate python manage.py collectstatic

Usage

Prepare resource for your model

# 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_classes in admin model to import/export via Django Admin

# 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_classes = [resources.BookResource]

Prepare view sets to import/export via API

# 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

License

  • Free software: MIT license