はじめてのDjangoアプリ作成(その2)
[ 関連エントリ ]
その1 : プロジェクト作成 & モデル作成
その2 : admin サイトの使い方
その3 : ビュー & テンプレートを作る(照会画面)
その4 : フォームを作る(入力画面)
[ 参考サイト ]
Django ドキュメント → はじめての Django アプリ作成、その 2
――――――――
■ adminサイトの有効化
(01) ファイル「urls.py」を編集。3箇所のコメントアウトを解除。
from django.conf.urls.defaults import * # Uncomment the next two lines to enable the admin: from django.contrib import admin # ★ コメントアウト解除 admin.autodiscover() # ★ コメントアウト解除 urlpatterns = patterns('', # Example: # (r'^mysite/', include('mysite.foo.urls')), # Uncomment the admin/doc line below and add 'django.contrib.admindocs' # to INSTALLED_APPS to enable admin documentation: # (r'^admin/doc/', include('django.contrib.admindocs.urls')), # Uncomment the next line to enable the admin: (r'^admin/', include(admin.site.urls)), # ★ コメントアウト解除 )
(02) ファイル「settings.py」を編集。
INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.admin', # ★ 追記 'mysite.polls' )
(03) 下記コマンド実行にて、テーブル作成(DB同期)
python manage.py syncdb
(04) コマンドプロンプトにて、DBにテーブルが作成されたことを確認する。
show tables;
+―――――――――-+
| Tables_in_db_mysite
+―――――――――-+
| auth_group
| auth_group_permissions
| auth_message
| auth_permission
| auth_user
| auth_user_groups
| auth_user_user_permissions
| django_admin_log
| django_content_type
| django_session
| django_site
| polls_choice
| polls_poll
+―――――――――-
13 rows in set (0.02 sec)
(05) 下記コマンド実行にて、Django開発サーバを起動。
python manage.py runserver
■ adminサイトにログイン
(01) ブラウザにて「http://127.0.0.1:8000/admin/」にアクセスして、下記ページが表示されることを確認。
(02) adminサイトにスーパーユーザのアカウントでログイン
■ adminサイトにて、モデル編集可にする(親テーブル編)
(01) ファイル「models.py」を編集。
from django.contrib import admin from django.db import models # ★ 追記 class Poll(models.Model): question = models.CharField(max_length=200) pub_date = models.DateTimeField('date published') class Choice(models.Model): poll = models.ForeignKey(Poll) choice = models.CharField(max_length=200) votes = models.IntegerField() admin.site.register(Poll) # ★ 追記
(02) adminサイトをリロードして、メニュー「Polls」が登場してることを確認。
(03) adminサイトにて、親テーブル(polls_poll)の照会・挿入・更新・削除ができる。
(04) SQL文にて、正しくデータが反映されていることを確認。
select * from polls_poll;
+―-+――――――――–+
| id | question
+―-+――――――――–+
| 2 | sitsumon no naiyou dayo.
+―-+――――――――–+
※ adminサイトのデータの並びは、入れ替えたり、項目ごとに分割表示したりできる。
■ adminサイトにて、モデル編集可にする(子テーブル編)
(01) ファイル「models.py」を編集。データの親子関係が見れるようにする。
from django.contrib import admin from django.db import models class Poll(models.Model): question = models.CharField(max_length=200) pub_date = models.DateTimeField('date published') class Choice(models.Model): poll = models.ForeignKey(Poll) choice = models.CharField(max_length=200) votes = models.IntegerField() # ★ 追記 START class ChoiceInline(admin.TabularInline): model = Choice extra = 3 class PollAdmin(admin.ModelAdmin): inlines = [ChoiceInline] list_filter = ['pub_date'] search_fields = ['question'] list_display = ('question', 'pub_date') # ★ 追記 END try: admin.site.register(Poll, PollAdmin) # ★ 正体不明のエラー対策のため、tryで囲む。 except: pass
(02) adminサイトにて、子テーブル(polls_choice)の照会・挿入・更新・削除ができる。
(09) adminサイトにて、親テーブル(polls_poll)のフィルタ & 検索ができる。