3. admin.py¶
models.pyにモデルを作成したら、もれなくadmin.pyに追加しましょう。他のファイルと同様に、adminの定義もクラスで定義します。
例えば以下のようなPollモデルがあった場合、
class User(models.Model):
username = models.CharField(max_length=100)
class Poll(models.Model):
user = ForeignKey(User)
created_at = models.DateTimeField(default=datetime.datetime.now)
admin.pyには以下を記述します
from django.contrib import admin
from . import models
@admin.register(models.User)
class UserAdmin(admin.ModelAdmin):
list_display = (
'username',
)
@admin.register(models.Poll)
class PollAdmin(admin.ModelAdmin):
date_heirarchy = (
'created_at',
)
list_display = (
'user__username',
'created_at'
)
ModelAdminを継承するクラスは、必ず{model名}Adminという名前で定義します。 また、管理画面の一覧に表示させる項目を定義し、もし外部キーが含まれる場合は、外部キーの接続先モデルのうち、どのフィールドを表示するかを指定します。 もしモデルで__repr__をきちんと定義していて、これを表示したい場合は外部キーのフィールド名は特に指定する必要はありません。 さらに、タイムスタンプモデルを継承するモデルの場合はcreated_atとupdated_atをdate_heirarchyに追加します。これで作成されたデータの順番で管理画面上に表示されます