Django お試し3

管理画面を作る

手順はものすごく簡単。
いよいよDjangoの真価を垣間見ることができる

mysite/settings.pyを開いて、INSTALLED_APPS内の
django.contrib.admin
のコメントアウトを外す

syncdbする
python manage.py syncdb
mysite/urls.pyを開いて、またコメントアウトを外していく
外すのは、以下の3行
from django.contrib import admin
admin.autodiscover()

    url(r'^admin/', include(admin.site.urls)),

サーバーを起動し
python manage.py runserver
エラーが無ければ、http://localhost:8000/admin/を開き、ログインできることを確認する。
ログインIDとパスワードは、startproject した時に設定したものを使用する。
ユーザー名だけなら auth_user テーブルを覗けば分かる。
忘れちゃった場合は、ユーザーを追加することになる。
https://docs.djangoproject.com/en/1.4/topics/auth/#topics-auth-creating-superusers

ログインすると、グループとユーザー、サイトが追加できるっぽい。
これじゃ寂しすぎるが、モデルもCRUDできる。

polls/admin.py を作成する。
内容はこんな感じ
from polls.models import Poll, Choice
from django.contrib import admin

admin.site.register(Poll)
admin.site.register(Choice)
これが必要最小限。
サーバーを起動しなおして、再度ログインする。
(ファイルを追加した場合は、即時反映されないみたい)

これで管理画面からモデルを操作できる。
これだと余りにも簡素すぎるので、ちょっと手を加える


class PollAdmin(admin.ModelAdmin):
   fields = ['pub_date', 'question']
   list_display = ('question', 'pub_date', 'was_published_recently')
admin.site.register(Poll, PollAdmin)
こんな感じに変更すると、編集画面の順番をいじったり(fields)、一覧画面の表示内容をいじったり(list_display)できる。

さらに
class ChoiceInline(admin.TabularInline):
   model = Choice
   extra = 3

class PollAdmin(admin.ModelAdmin):
   list_display = ('question', 'pub_date', 'was_published_recently')
   fieldsets = [
       ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
       (None,               {'fields': ['question']}),
   ]
   inlines = [ChoiceInline]

admin.site.register(Poll, PollAdmin)
Choiceのregisterを外して、Pollの編集画面からChoiceを設定できるように inlines を設定する。

さらにさらに
models.py を編集し
   was_published_recently.admin_order_field = 'pub_date'
   was_published_recently.boolean = True
   was_published_recently.short_description = 'Published recently?'
を追加して、was_published_recently欄の表示の仕方を設定する。

これで管理画面を開くと、結構さまになってる感じになる。
簡単なブログ程度なら、あとはフロントを作れば完成する。
最終更新:2012年10月26日 21:52
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。