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におけるモデル作成は次の手順で構成される。

  1. モデルの作成(models.py)
  2. マイグレーションの作成(makemigrationsコマンド)
  3. データベースに変更の適用(migrateコマンド)