Importing and exporting data with admin integration.
Django-import-export is a Django application and library for importing and exporting data with included admin integration.
- Published on
4 min read
•
Must Know Django Packages
django-import-export is a Django application and library for importing and exporting data with included admin integration.
Latest version :
django-import-export release v3 is currently in beta (pypi)
Features:
- support multiple formats (Excel, CSV, JSON, etc) read more from official docs
- admin integration for importing/exporting
- preview import changes
- export data respecting admin filters
Installation
pip install django-import-export
specific version can be installed by specifying the version.
pip install django-import-export==3.0.0b4
Configuration
Add the package to INSTALLED_APPS
on settings.py
# settings.py
INSTALLED_APPS = (
...
'import_export',
)
Collect statics to support styling in django admin panel.
python manage.py collectstatic
Integrating to admin panel
We need to define a Resources class that refers to a model in which we want to enable import export.
# admin.py
from import_export import resources
class BlogResource(resources.ModelResource):
class Meta:
model = Blog
Now we can register the model to admin with admin.register
#admin.py
from import_export.admin import ImportExportModelAdmin
class BlogAdmin(ImportExportModelAdmin):
resource_class = BlogResource
admin.site.register(Blog, BlogAdmin)
Full code looks like this
from django.contrib import admin
from apps.blog.models import Blog
from import_export import resources
from import_export.admin import ImportExportModelAdmin
# Register your models here.
class BlogResource(resources.ModelResource):
class Meta:
model = Blog
class BlogAdmin(ImportExportModelAdmin):
resource_class = BlogResource
admin.site.register(Blog, BlogAdmin)
That's it. Here are some screenshot to verify our configuration.
Here we can see that we can export on various formats. Similarly we can import on various formats. Furthermore we can use the import and export functionality programmatically as well.
Let's see an example to export using the shell. Fire up the shell by
python3 manage.py shell
We can do this by reusing the BlogResource
that we added on admin.py
file.
from apps.blog.admin import BlogResource
dataset = BlogResource().export()
print(dataset.csv)
This will print the exported data in csv format
id,author,poster,title,caption,slug,tags,markdown_body,series,views,is_archived,is_featured,created_at,updated_at
3,1,,sdfsd,sdfsdfsd,sdfs,1,sdfsd,,60,0,0,2022-08-20 10:05:19,2022-08-27 11:18:08
1,1,uploads/299496744_5438537262880214_6238834739525833684_n.jpeg,Title 1,some good caption,good-caption,1,"# THis is heading
## subheading
body text[![](http://localhost:8000/media/editor/IMG_20180219_152316_20220825111743599583.jpeg)](http://localhost:8000)
some `code` hightlight checking",,225,0,0,2022-08-20 10:04:48,2022-08-26 20:50:41
2,1,uploads/1660795538413.jpeg,Tittle 2,Tittle 2,sss,1,sdfsdf,,4,0,0,2022-08-20 10:05:08,2022-08-25 21:47:41
That's a wrap
Please do follow the official docs for more information. Thank you for reading this article.
Any feedback/comment/suggestions to improve the articles are welcomed!
Happy Learning!