ひこぽんのーと

覚書と雑記です。

Djangoをやってみよう。 その8-管理サイトでの操作-

その7のつづき。

その6で作ったWarshipモデルを管理画面に登録してみる。
nagamitsu1976.hatenadiary.jp

作成したモデルを管理画面に登録するには、
アプリケーションディレクトリ配下にあるadmin.pyにモデル管理クラスを作成する必要がある。
warship/admin.pyを開いて下記を追加する。

from django.contrib import admin
from warship.models import ShipClass, Warship
# Register your models here.


class ShipClassAdmin(admin.ModelAdmin):
    fields = [u"name"]


class WarshipAdmin(admin.ModelAdmin):
    fields = [ u"ship_class", u"name"]
    list_display = [u"ship_class", u"name"]


admin.site.register(ShipClass, ShipClassAdmin)
admin.site.register(Warship, WarshipAdmin)

ここではAdminクラスのメンバにfieldsとlist_displayを定義した。

fieldsについてはモデルの編集画面に表示したい項目をリストで定義している。
つまり、ShipClassは"name"をWarshipは"ship_class"と"name"を表示したい、
ということになる。

list_displayについては、モデルの一覧画面で表示したい項目を定義していて、
ここでは仮にWarshipだけ"ship_class"と"name"を定義してみた。

最後に、admin.site.registerを使って管理画面にモデルと管理モデルのひも付けを行って
処理は完了。
サーバを再起動して管理画面を表示しなおしてみると、項目が増えているのがわかる。

f:id:nagamitsu1976:20170623151530p:plain

Warshipをクリックして一覧を表示してみると、
list_displayで定義した項目が表示されるのがわかる。
f:id:nagamitsu1976:20170623151902p:plain

一方、前画面に戻ってShipClassを開いてみると。。。
項目がnameになっておらず、__str__()の値がそのまま表示される。
f:id:nagamitsu1976:20170623152055p:plain

「ADD Ship class」ボタンを押して、編集画面を見てみる。
こちらはfieldsに定義したnameが表示される。
f:id:nagamitsu1976:20170623152252p:plain

ついでに「軽巡」を入力してSAVEボタンを押してみる。
正しく追加できているのがわかる。
f:id:nagamitsu1976:20170623152527p:plain
f:id:nagamitsu1976:20170623152536p:plain

同じように、Warshipの追加ボタンを押して、
編集画面を確認してみる。
項目の順序もfieldsの順番で表示されている。
f:id:nagamitsu1976:20170623154729p:plain

ついでに登録も試してみる。
f:id:nagamitsu1976:20170623154656p:plain
f:id:nagamitsu1976:20170623153040p:plain

とまぁ、こんな感じで簡単にモデルの登録、編集画面ができたとさ。
使い方としてはマスタ編集画面だとかになるんだろうか。
製造時のデバッグデータ、試験データ作成にもいいかも。
なんせ、低コストだし。

といったところで、次回へ続く。