Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
6
Help us understand the problem. What is going on with this article?
@toromo

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

More than 1 year has passed since last update.

実装するもの

  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)

ひとこと

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

6
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
toromo
今年度で3年目になりました。 WEB開発やってます。自動化が好物。 定期的にアウトプットしていけたらと思います。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
6
Help us understand the problem. What is going on with this article?