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を使って管理画面にモデルと管理モデルのひも付けを行って
処理は完了。
サーバを再起動して管理画面を表示しなおしてみると、項目が増えているのがわかる。
Warshipをクリックして一覧を表示してみると、
list_displayで定義した項目が表示されるのがわかる。
一方、前画面に戻ってShipClassを開いてみると。。。
項目がnameになっておらず、__str__()の値がそのまま表示される。
「ADD Ship class」ボタンを押して、編集画面を見てみる。
こちらはfieldsに定義したnameが表示される。
ついでに「軽巡」を入力してSAVEボタンを押してみる。
正しく追加できているのがわかる。
同じように、Warshipの追加ボタンを押して、
編集画面を確認してみる。
項目の順序もfieldsの順番で表示されている。
ついでに登録も試してみる。
とまぁ、こんな感じで簡単にモデルの登録、編集画面ができたとさ。
使い方としてはマスタ編集画面だとかになるんだろうか。
製造時のデバッグデータ、試験データ作成にもいいかも。
なんせ、低コストだし。
といったところで、次回へ続く。