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にモデルごとのクラスを用意し、そこにカスタマイズ用のコードを書いていくことになる。