Djangoに触る(その3)
3日目です.
昨日混乱したテーブルの追加とmigrate
について調べたことと,チュートリアルの続きに挑みます
前回まで
データベースのテーブル作成に挑みました. がテーブルの作成で混乱したので,そこで詰まってました….
今日やったところ
はじめての Django アプリ作成、その2 | Django ドキュメント | Django
宣言通り,テーブルの作成について調べてまとめました. まとめた知識について触れながら,この章を終えました.
テーブルの作成について
前回migrate
コマンドで混乱したのでそこについて調べました.
モデルを作成しテーブルを作るのですが,
データベースサーバーにテーブルを作成する場合,マイグレーションファイル
と呼ばれるものを作成する必要があります.
これを作成するためのコマンドが,makemigrations
コマンドになります.
今回は前につくったpolls
の中にテーブルを作成します.
その為にまず,プロジェクトにpolls
の存在を教えてやる為に,
mystie/setting.py
の中のINSTALLED_APPS
にpolls.apps.PollsConfig
を追加してあげます.
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'polls.apps.PollsConfig' ]
makemigrations
INSTALLED_APPS
への追記が完了したらmakemigrations
を実行します.
これをすることで,settings.py
内に記入したアプリケーションを精査し,マイグレーションファイルを作成してくれます.
マイグレーションファイルはpythonの形式で保存されます.
その前に今回はpolls/models
の中に,以下のモデルを作成します.
これの説明は省略しますが,これを作ることで質問事項や情報の公開日などの情報や,
質問のテキスト,投票数などを情報を記述してます.
from django.db import models class Question(models.Model): question_text = models.CharField(max_length=200) pub_date = models.DateTimeField('date published') class Choice(models.Model): question = models.ForeignKey(Question, on_delete=models.CASCADE) choice_text = models.CharField(max_length=200) votes = models.IntegerField(default=0)
モデルを記述したら,いよいよミグレーションファイルを作成します.
$ python3 manage.py makemigrations polls
するとこのような画面になると思います.
polls/migrations
ファイル内に0001_initial/py
が生成されたと思います.
ひとまずこれでマイグレーションファイルの生成は完了です.
sqlmigrate
マイグレーションファイルを対象にとって,
そのマイグレーションファイルがどのようなSQLを実行するかを確認するコマンドに,sqlmigrate
というコマンドが存在します.
今回は以下のコマンドを入力します.
ここでの polls
はアプリケーション名を指し,0001
は先ほど作成したマイグレーションファイル名を指しています
$ python3 manage.py sqlmigrate polls 0001
こんな感じの内容が出ればひとまずOKです.
migrate
では最後に先ほど作ったマイグレーションファイルを,サーバーに適応します.
$ python3 manage.py migrate
するとこんな感じになります. これで適用は完了です.
シェルでの操作
python manage.py shell
とすることで,先ほどデータベースの中などを色々見ることができます.
ここでの記述は省略.
管理ユーザadminの作成
データベースをあれこれする上で大切なのが,管理者の存在です.(adminとかsuperuserとか言ったりすると思います)
まずはadminサイトに接続できるユーザーを作成します.
$ python3 manage.py createsuperuser
するとUsername
,Email ddress
,Passward
を要求されるので設定してあげてください.
下はパスワード設定を適当にやりすぎて,3回も失敗している図です.
adminサイトに入る
ではサーバを起動してadminページに入りたいと思います.
python3 manage.py runserver
を実行し,http://127.0.0.1:8000/admin/にアクセスしましょう.
ここに先ほどのUsername
,Passward
を入力すると….
このようにadmin用の管理サイトに入れました.
pollsアプリを追加する
実はこのadminページ上ではpolls
を編集することはできません.
なのでpolls/admin.py
を以下のように編集ましょう.
from django.contrib import admin from .models import Question admin.site.register(Question)
変更の上で,リロードするとこのようにpolls
アプリの中からQuestion
が追加されました.
今日はここまでお疲れ様でした.
おわりに
テーブルの作成について色々調べました. 結局人に聞いてしまったりしたので,なるだけ自分だけで完結できるといいですね…と少し反省.
三日坊主の壁を超えたので,そこはほっとしてますが, 進捗スピードは速くないのでスピードアップできるといいかなーとも思いました.
うーん.頑張ります.