Djangoは自動的に管理画面を生成してくれる。
先日の記事では、この管理画面からアプリのデータを追加・更新できるようにする方法を紹介した。
今回はこの管理画面に配置されている入力フィールドの並び順を変更する方法を紹介する。
入力フィールドの並び順を変更する
まずはpolls/admin.pyを以下のように編集する。
from django.contrib import admin
from .models import Question
class QuestionAdmin(admin.ModelAdmin):
fields = ['pub_date', 'question_text']
admin.site.register(Question, QuestionAdmin)
新たにQuestionAdminクラスを作成し、registerメソッドの第二引数に渡した。
ここで何をやっているかというと、fields変数に格納した配列の順に入力フィールドの並び順を変えているのだ。
さらにカスタマイズしてみる
先ほどの例は単に並び順を変更してみただけだったが、もう少しカスタマイズしてみる。
class QuestionAdmin(admin.ModelAdmin):
fieldsets = [
(None, {'fields': ['question_text']}),
('Date information', {'fields': ['pub_date']})
]
今度は並び順を元に戻し、公開日の入力フィールドの前に見出しを付けてみた。
入力フィールドが増えてくると、こういった見出しなども重要なUI要素となってくるだろう。
このようにDjangoの管理画面をカスタマイズする際は、admin.pyにモデルごとのクラスを用意し、そこにカスタマイズ用のコードを書いていくことになる。