Django公式チュートリアルを参考に、アプリのモデルを作成する手順についてまとめていく。
前回までの記事で作成したアプリはこちら。
【Python】Djangoプロジェクトの作成と開発用サーバーの立ち上げ
【Python】Djangoアプリを作成してHelloWorldを表示する
今回は、作成したpollsアプリにQuestionとChoice、二つのモデルを作成する。
モデルの作成
まず、polls/models.pyに以下2つのクラスを追記する。
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行を追加しよう。
INSTALLED_APPS = [
    'polls.apps.PollsConfig', # この行を追加
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]
ファイルを保存したら以下のコマンドを叩く。
python manage.py makemigrations polls
エラー文が出なければOK。
makemigrationsを実行することで、Djangoにモデルの変更があったことを伝え、また変更をマイグレーションとして保存することができる。
最後に下記のmigrateコマンドを実行し、定義したモデルをデータベースに反映させる。
python manage.py migrate
まとめ 〜モデル作成の手順〜
Djangoにおけるモデル作成は次の手順で構成される。
- モデルの作成(models.py)
 - マイグレーションの作成(makemigrationsコマンド)
 - データベースに変更の適用(migrateコマンド)