【Django入門7】管理画面の使い方|Django Adminで効率的にデータ管理

管理画面とは

管理画面の概要

Djangoの管理画面は、データベースに格納されているデータをブラウザ上で簡単に管理するためのツールです。デフォルトで提供されているため、すぐに使用できます。

なぜ管理画面を使うのか?

  • 効率的なデータ管理: データの追加、編集、削除を簡単に行えます。
  • セキュアな管理環境: ログイン機能が標準で提供されており、管理者だけがアクセスできます。
  • 開発効率の向上: コードを書くことなく、管理画面からデータの操作が可能です。

管理画面へのアクセス

開発サーバの起動

  1. プロジェクトのルートディレクトリで次のコマンドを実行します。 python manage.py runserver
  2. ブラウザで次のURLにアクセスします。 http://127.0.0.1:8000/admin/

初期設定でのアクセス制限

初回の状態では、管理画面にログインするためのスーパーユーザー(管理者ユーザー)が設定されていません。そのため、次の手順でスーパーユーザーを作成します。

スーパーユーザーの作成

スーパーユーザーとは?

スーパーユーザーは、管理画面にログインしてすべての操作を行える特権ユーザーです。

スーパーユーザーの作成手順

  1. ターミナルで次のコマンドを実行します。 python manage.py createsuperuser
  2. ユーザー名、メールアドレス、パスワードを入力します。
  3. 正常に作成されると、管理画面にログインできるようになります。

モデルの管理画面への登録

admin.pyの役割

Djangoでは、管理画面に表示するモデルをadmin.pyファイルで登録する必要があります。

モデルの登録手順

  1. アプリケーションのディレクトリにあるadmin.pyファイルを開きます。
  2. 管理したいモデルをインポートし、admin.site.register()を使って登録します。

例:

from django.contrib import admin
from .models import BlogPost

admin.site.register(BlogPost)
  1. 登録後、管理画面にアクセスすると、モデルが表示され、データの操作が可能になります。

管理画面での基本操作

データの追加

  1. 管理画面にログインし、管理したいモデルを選択します。
  2. 「Add」ボタンをクリックし、新しいデータを入力します。
  3. 「Save」ボタンを押すとデータベースに保存されます。

データの編集

  1. 編集したいデータをリストから選択します。
  2. フォームが表示されるので、必要な部分を修正します。
  3. 「Save」ボタンを押して変更を保存します。

データの削除

  1. 削除したいデータを選び、「Delete」ボタンをクリックします。
  2. 確認画面が表示されるので、「Yes」を選択するとデータが削除されます。

管理画面のカスタマイズ

モデルの表示をカスタマイズする

モデルのリスト表示や詳細表示をカスタマイズすることで、管理画面の使い勝手を向上させることができます。

例: 管理画面での表示を改善する

from django.contrib import admin
from .models import BlogPost

class BlogPostAdmin(admin.ModelAdmin):
    list_display = ('title', 'published_at', 'author')  # 一覧で表示するフィールドを指定
    search_fields = ('title', 'content')  # 検索可能なフィールドを指定
    list_filter = ('published_at', 'author')  # フィルタリングオプションを追加

admin.site.register(BlogPost, BlogPostAdmin)

カスタムアクションの追加

管理画面にカスタムアクションを追加することで、複数のデータに対する操作を一括で行えます。

例: 一括公開するアクション

from django.contrib import admin
from .models import BlogPost

def make_published(modeladmin, request, queryset):
    queryset.update(status='published')
make_published.short_description = "選択した投稿を公開に設定"

class BlogPostAdmin(admin.ModelAdmin):
    actions = [make_published]

admin.site.register(BlogPost, BlogPostAdmin)

セキュリティとアクセス制御

ユーザーと権限の管理

Djangoの管理画面では、特定のユーザーに権限を与えて、操作できるデータや機能を制御することができます。

設定例:

  • スーパーユーザー: すべての権限を持つユーザー。
  • スタッフユーザー: 管理画面にログインできるが、すべての操作が許可されているわけではない。
  • パーミッションの設定: 特定のアクション(追加、編集、削除など)ごとに権限を与える。

ユーザーの作成と権限設定:

  1. 管理画面の「Users」セクションから新しいユーザーを作成します。
  2. 必要に応じて、権限を割り当てます。

まとめ

Djangoの管理画面は、標準機能でありながら非常に強力なデータ管理ツールです。スーパーユーザーを作成し、モデルを登録するだけで簡単にデータ操作が可能になります。基本操作に慣れたら、管理画面のカスタマイズや権限設定を行い、より効率的で安全なデータ管理を目指しましょう。