Export data from Django Admin to CSV

Viewing all your data from your django Admin is not ideal, Sometimes, you may want to export it to a spreedsheet format and perform data analytics or validation.

This is where the django-import-export library comes in handy. It provides an easy way to import and export data in various formats, such as CSV, xlsx and more.

The focus of this tutorial will be on exporting data, and adding export button on admin.

Getting started with Django import export

Start by installing django-import export

pip install django-import-export
pip install django-import-export
pip install django-import-export

Enter fullscreen mode Exit fullscreen mode

Add it to installed apps

<span># settings.py </span><span>INSTALLED_APPS</span> <span>=</span> <span>[</span>
<span>...</span>
<span>'</span><span>import_export</span><span>'</span><span>,</span>
<span>]</span>
<span># settings.py </span><span>INSTALLED_APPS</span> <span>=</span> <span>[</span>
    <span>...</span>
    <span>'</span><span>import_export</span><span>'</span><span>,</span>
<span>]</span>
# settings.py INSTALLED_APPS = [ ... 'import_export', ]

Enter fullscreen mode Exit fullscreen mode

Create a resource class inside your resource.py inside your app.

<span>class</span> <span>SampleResource</span><span>(</span><span>resources</span><span>.</span><span>ModelResource</span><span>):</span>
<span>class</span> <span>Meta</span><span>:</span>
<span>model</span> <span>=</span> <span>SampleModel</span>
<span>fields</span> <span>=</span> <span>(</span><span>'</span><span>id</span><span>'</span><span>,</span> <span>'</span><span>price</span><span>'</span><span>,</span> <span>'</span><span>description</span><span>'</span><span>)</span> <span># optional, only specified fields gets exported, else all the fields </span> <span>export_order</span> <span>=</span> <span>(</span><span>'</span><span>id</span><span>'</span><span>,</span> <span>'</span><span>description</span><span>'</span><span>,</span> <span>'</span><span>price</span><span>'</span><span>)</span> <span># optional, describes how order of export </span>
<span>class</span> <span>SampleResource</span><span>(</span><span>resources</span><span>.</span><span>ModelResource</span><span>):</span>

    <span>class</span> <span>Meta</span><span>:</span>
        <span>model</span> <span>=</span> <span>SampleModel</span>
        <span>fields</span> <span>=</span> <span>(</span><span>'</span><span>id</span><span>'</span><span>,</span> <span>'</span><span>price</span><span>'</span><span>,</span> <span>'</span><span>description</span><span>'</span><span>)</span> <span># optional, only specified fields gets exported, else all the fields </span>        <span>export_order</span> <span>=</span> <span>(</span><span>'</span><span>id</span><span>'</span><span>,</span> <span>'</span><span>description</span><span>'</span><span>,</span> <span>'</span><span>price</span><span>'</span><span>)</span> <span># optional, describes how order of export </span>
class SampleResource(resources.ModelResource): class Meta: model = SampleModel fields = ('id', 'price', 'description') # optional, only specified fields gets exported, else all the fields export_order = ('id', 'description', 'price') # optional, describes how order of export

Enter fullscreen mode Exit fullscreen mode

This class defines how the data will be imported and exported. You can also specify fields.

Now add it to admin so go to your admin.py

<span>from</span> <span>django.contrib</span> <span>import</span> <span>admin</span>
<span>from</span> <span>import_export.admin</span> <span>import</span> <span>ExportMixin</span>
<span>from</span> <span>.models</span> <span>import</span> <span>MyModel</span>
<span>from</span> <span>.resources</span> <span>import</span> <span>MyModelResource</span>
<span>@admin.register</span><span>(</span><span>MyModel</span><span>)</span>
<span>class</span> <span>MyModelAdmin</span><span>(</span><span>ExportMixin</span><span>,</span> <span>admin</span><span>.</span><span>ModelAdmin</span><span>):</span>
<span>resource_class</span> <span>=</span> <span>MyModelResource</span>
<span>from</span> <span>django.contrib</span> <span>import</span> <span>admin</span>
<span>from</span> <span>import_export.admin</span> <span>import</span> <span>ExportMixin</span>
<span>from</span> <span>.models</span> <span>import</span> <span>MyModel</span>
<span>from</span> <span>.resources</span> <span>import</span> <span>MyModelResource</span>

<span>@admin.register</span><span>(</span><span>MyModel</span><span>)</span>
<span>class</span> <span>MyModelAdmin</span><span>(</span><span>ExportMixin</span><span>,</span> <span>admin</span><span>.</span><span>ModelAdmin</span><span>):</span>
    <span>resource_class</span> <span>=</span> <span>MyModelResource</span>
from django.contrib import admin from import_export.admin import ExportMixin from .models import MyModel from .resources import MyModelResource @admin.register(MyModel) class MyModelAdmin(ExportMixin, admin.ModelAdmin): resource_class = MyModelResource

Enter fullscreen mode Exit fullscreen mode

That’s it now you can export data directly from admin panel.

Choose the fields to export

You can also customize like specifying permissions and more. You can read this in their docs

原文链接:Export data from Django Admin to CSV

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
A good idea without action is worth nothing.
如果没有切实执行,再好的点子也是徒劳
评论 抢沙发

请登录后发表评论

    暂无评论内容