実装するもの
- 管理者画面に以下のボタンを追加する。
- インポート
- エクスポート
- DBテーブルの権限で表示を制御する。
- インポート :書き込み権限が必要
- エクスポート:だれでもOK
これらを、django-import-export
というライブラリで実現します。
django-import-exportの使い方(導入方法)まとめ記事です。
権限アカウント
今回は以下の権限を持つアカウントを作成した。
- admin: 全権限
- guest: 閲覧権限のみ
画面表示
adminでログインした場合
guestでログインした場合
インポート画面
エクスポート画面
実装
インストール
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.py
にBook
という名のテーブルがあることを想定
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)
ひとこと
シンプルで高機能!素晴らしい。
今回は、全ファイルのエクスポートだったが、フィルタもできるらしい。
挑戦してみたい。