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)
To install django-import-export-extensions, run this command in your terminal:
$ pip install django-import-export-extensionsAdd 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 collectstaticPrepare 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.BookUse CeleryImportExportMixin class and set resource_class 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_class = resources.BookResourcePrepare 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.BookResourceIf you use multiple or custom admin site, register required models to them
# app/admin.py
from import_export_extensions.models import ExportJob
from import_export_extensions.admin.model_admins.export_job_admin import ExportJobAdmin
from django.apps import AppConfig
custom_admin_site = BaseAdminSite(name="custom_admin")
# ...
cutom_admin_site.register(ExportJob, ExportJobAdmin)Don't forget to configure Celery if you want to run import/export in background
- 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/
- Free software: MIT license