DjangoのAdminインターフェースは、モデルのCRUD操作やユーザー管理、権限設定などを迅速に実現できる強力なツールです。以下では、日本語化やタイムゾーン設定、そしてモデルのカスタム表示名を追加して、効率的なAdminインターフェースを構築する方法を説明します。
1. 設定ファイルの編集
プロジェクトのsettings.pyファイルを開き、以下の内容を変更または追加してください:
# 言語コードとタイムゾーンの設定
LANGUAGE_CODE = 'ja'
TIME_ZONE = 'Asia/Tokyo'
# ローカライズに関する設定
USE_L10N = False
# 日付と時刻のフォーマットを日本語風に調整
DATETIME_FORMAT = 'Y年m月d日 H:i:s'
DATE_FORMAT = 'Y年m月d日'
2. モデルへのメタ情報追加
各モデルに対して、Admin画面での表示名やインスタンス名を指定するためのMetaクラスと__str__メソッドを追加します。
from django.db import models
class Category(models.Model):
name = models.CharField(max_length=100)
class Meta:
verbose_name_plural = verbose_name = "カテゴリー"
def __str__(self):
return self.name
class Item(models.Model):
name = models.CharField(max_length=100)
category = models.ForeignKey(Category, on_delete=models.CASCADE)
class Meta:
verbose_name_plural = verbose_name = "アイテム"
def __str__(self):
return self.name
class Purchase(models.Model):
user = models.CharField(max_length=100)
item = models.ForeignKey(Item, on_delete=models.CASCADE)
class Meta:
verbose_name_plural = verbose_name = "購入履歴"
def __str__(self):
return f"{self.user}の購入"
3. Admin登録とカスタマイズ
admin.pyファイルを編集し、各モデルをAdminインターフェースに登録します。また、リスト表示やフィルター機能を追加します。
from django.contrib import admin
from .models import Category, Item, Purchase
# Adminサイトのヘッダーとタイトルを変更
admin.site.site_header = 'Django ショップ管理'
admin.site.site_title = 'Django ショップ管理'
# 内部的に関連するモデルを表示させるためのインラインクラス
class PurchaseInline(admin.TabularInline):
model = Purchase
@admin.register(Category)
class CategoryAdmin(admin.ModelAdmin):
fields = ('name',)
list_display = ('name',)
search_fields = ('name',)
@admin.register(Item)
class ItemAdmin(admin.ModelAdmin):
fields = ('name', 'category')
list_display = ('name', 'category')
list_filter = ('category',)
search_fields = ('name',)
@admin.register(Purchase)
class PurchaseAdmin(admin.ModelAdmin):
fields = ('user', 'item')
list_display = ('user', 'item', 'created_at')
list_filter = ('user',)
search_fields = ('user',)
inlines = [PurchaseInline]
これでAdminインターフェースが完成です! 必要に応じてさらに詳細なカスタマイズを行うことも可能です。