LoginSignup
4
9

More than 3 years have passed since last update.

【Django】ExcelやCSV形式でDBテーブルのインポート、エクスポートを行う

Last updated at Posted at 2020-01-26

実装するもの

  1. 管理者画面に以下のボタンを追加する。
    • インポート
    • エクスポート
  2. DBテーブルの権限で表示を制御する。
    • インポート :書き込み権限が必要
    • エクスポート:だれでもOK

これらを、django-import-exportというライブラリで実現します。
django-import-exportの使い方(導入方法)まとめ記事です。

権限アカウント

今回は以下の権限を持つアカウントを作成した。

  • admin: 全権限
  • guest: 閲覧権限のみ

画面表示

adminでログインした場合

image.png←このボタンが追加される
image.png

guestでログインした場合

image.png←このボタンが追加される

image.png

インポート画面

形式は下記の通り。豊富。
image.png

エクスポート画面

形式は下記の通り。インポートよりさらに豊富。
image.png

実装

インストール

django-import-export
https://django-import-export.readthedocs.io/en/latest/

pip install django-import-export

setting.pyに書く

setting.py
# インストールアプリ
INSTALLED_APPS = (
    ...
    'import_export',
)

# 管理サイトでのインポート機能は権限が必要と設定する
IMPORT_EXPORT_IMPORT_PERMISSION_CODE = 'change'

スタティックファイル書き出し

python manage.py collectstatic

admin.pyに書く

model.pyBookという名のテーブルがあることを想定

admin.py
from django.contrib import admin
from import_export import resources
from import_export.admin import ImportExportModelAdmin
from .models import *


# リソース
class BookResource(resources.ModelResource):
    class Meta:
        model = Book

# 管理
class BookAdmin(ImportExportModelAdmin):
    resource_class = BookResource

# 登録
admin.site.register(Book, BookAdmin)

ひとこと

シンプルで高機能!素晴らしい。
今回は、全ファイルのエクスポートだったが、フィルタもできるらしい。
挑戦してみたい。

4
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
9