Django公式チュートリアルを参考に、アプリのモデルを作成する手順についてまとめていく。
前回までの記事で作成したアプリはこちら。
【Python】Djangoプロジェクトの作成と開発用サーバーの立ち上げ
【Python】Djangoアプリを作成してHelloWorldを表示する
今回は、作成したpollsアプリにQuestionとChoice、二つのモデルを作成する。
モデルの作成
まず、polls/models.pyに以下2つのクラスを追記する。
01 02 03 04 05 06 07 08 09 10 | 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 ) |
少しコードを解説しておくと、まずQuestionクラスには質問文と掲載日を、Choiceクラスには選択肢となるテキストと投票数を管理するvotesが定義されている。
また、Choiceクラスの選択肢は、ForeignKeyで一つのQuestionに対応するようにしている。
作成したモデルを有効化する
モデルを有効化する前に、作成しているアプリをDjangoプロジェクトに追加する必要がある。
mysite/settings.pyを開いて以下の1行を追加しよう。
1 2 3 4 5 6 7 8 9 | INSTALLED_APPS = [ 'polls.apps.PollsConfig' , # この行を追加 'django.contrib.admin' , 'django.contrib.auth' , 'django.contrib.contenttypes' , 'django.contrib.sessions' , 'django.contrib.messages' , 'django.contrib.staticfiles' , ] |
ファイルを保存したら以下のコマンドを叩く。
1 | python manage.py makemigrations polls |
エラー文が出なければOK。
makemigrationsを実行することで、Djangoにモデルの変更があったことを伝え、また変更をマイグレーションとして保存することができる。
最後に下記のmigrateコマンドを実行し、定義したモデルをデータベースに反映させる。
1 | python manage.py migrate |
まとめ 〜モデル作成の手順〜
Djangoにおけるモデル作成は次の手順で構成される。
- モデルの作成(models.py)
- マイグレーションの作成(makemigrationsコマンド)
- データベースに変更の適用(migrateコマンド)