Django組み込みの管理画面を活用する

管理画面の基本設定

Djangoプロジェクトの初期構築時に、管理画面用のルーティングは既に準備されています。必要に応じてurls.pyに以下の設定を追加してください。


# urls.py ファイル

from django.urls import path
from django.contrib import admin

urlpatterns = [
    path('management/', admin.site.urls),
]

サーバー起動後、ブラウザでhttp://127.0.0.1:8000/management/にアクセスするとログイン画面が表示されます。

管理者アカウントの作成

管理画面にアクセスするためのスーパーユーザーを作成するには、プロジェクトディレクトリで以下のコマンドを実行します。


python manage.py createsuperuser

プロンプトが表示されたら、ユーザー名admin、メールadmin@example.com、パスワードsecurepassword123を入力してください。

モデルの管理画面登録

データベース操作を効率化するため、モデルを管理画面に登録します。アカウントアプリの例:


# account/admin.py

from django.contrib import admin
from account.models import Member

class MemberAdmin(admin.ModelAdmin):
    display_fields = ['login_id', 'contact_email']

admin.site.register(Member, MemberAdmin)

同様にブログアプリのモデルも登録:


# blog/admin.py

from django.contrib import admin
from blog.models import Post

class PostAdmin(admin.ModelAdmin):
    display_fields = ['post_id', 'title_text']

admin.site.register(Post, PostAdmin)

多言語対応と表示設定

管理画面を日本語表示するには、settings.pyで以下を設定:


# settings.py

LANGUAGE_CODE = 'ja'
TIME_ZONE = 'Asia/Tokyo'

アプリケーション名の日本語化:


# account/apps.py

from django.apps import AppConfig

class AccountConfig(AppConfig):
    name = 'account'
    verbose_name = '会員管理'

テーブル名の複数形制御

モデル定義で複数形を抑制:


class Member(models.Model):
    class Meta:
        db_table = 'member'
        verbose_name = '会員'
        verbose_name_plural = '会員'

関連データの表示カスタマイズ

記事管理画面で著者名を表示する方法:


def author_display(obj):
    return obj.author.login_id

class PostAdmin(admin.ModelAdmin):
    display_fields = ['post_id', author_display, 'title_text']
    clickable_fields = ['post_id', 'title_text']
    readonly_fields = ['post_id']

モデルに文字列表現を追加:


class Member(models.Model):
    def __str__(self):
        return self.login_id

タグ: Django admin-interface model-admin i18n database-management

5月17日 08:50 投稿