サイドバーの「Django ドキュメント検索」というプレースホルダの入った検索では、Django ドキュメント (Django 2.1) の公式サイト内を検索できます

はじめに

Django を学習するには、何はともあれ公式チュートリアル「はじめての Django アプリ作成」からスタートしてみるのが良いでしょう。しかし、いざチュートリアル通りに進めようとしても躓く場合も多いと思います。そこで、「チュートリアルの進め方」シリーズとして、チュートリアルに沿った作業を行いながら補足事項をまとめることにしました。チュートリアルで躓いた際のヒントとしてお使いください。

利用環境は Ubuntu、 Linux Mint を中心として説明しますが、 Windows についても補足します。

前回は、Django チュートリアルの進め方 その1 と題して はじめての Django アプリ作成、その 1 についてまとめました。

今回は、はじめての Django アプリ作成、その 2 の前半についてまとめました。

Database の設定

ここでは、チュートリアルと同じ SQLite3 を使って設定することにします。

運用上は PostgreSQL や MySQL を利用する事が多いと思いますが、それぞれの DB 毎に注意事項等があり、チュートリアルを進める上では SQLite3 を使うのが無難です。 (PostgreSQL、 MySQL、 SQLServer 等の接続例については、後々記事にする予定です。)

それでは、SQLite3 を前提として mysite/settigns.py を設定していきます。

この部分を接続条件に従って書き換えます。今回はデフォルトのままで使います。

'ENGINE' を見ると、SQLite3 を使っているのが確認できます。

'NAME' は DB 名です。 SQLite はファイルベースなので、該当するファイル名へのパスを設定します。ここでは、プロジェクト直下 (manage.py のあるフォルダ) の db.sqlite3 というファイルを指すように os.path.join を使って設定されています。

パスとして BASE_DIR を付加していますが、この値はプロジェクト直下 (manage.py のあるフォルダ) を指すように、 settings.py の最初の方で設定されています。

TIME_ZONE を設定します。

LANGUAGE_CODE と TIME_ZONE を日本に設定しました。

INSTALLED_APPS の設定状況を確認します。

予めこれらのアプリケーションがインストールされているため、データベースを初期化しておく必要があります。 (SQLite 以外の DB を使う場合は、予め DB を作成しておいてください。)

manage.py migrate コマンドを実行します。

下記のように、テーブルが作成されています。

モデルの作成


Django の「モデル」は、DB のテーブル定義に相当する Python コードです。具体的には django.db.Model を継承したクラスとして定義されています。

まず polls にモデルを追加します。

Question (質問) と Choice (回答) という2つのモデルを定義しています。テーブルのフィールドは Field クラスを使って定義します。

CharField
小 - 大サイズの文字列のフィールド
CharField.max_length: フィールドの最大長(文字数)
DateTimeField
Python で datetime.datetime インスタンスによって表される日付と時刻
auto_now: オブジェクトが保存される度に自動的に現在の日時をセットする
auto_now_add: オブジェクトが最初に作成されるとき、自動的にフィールドに現在の日時をセットする
IntegerField
整数。Django でサポートされる全てのデータベースでは、-2147483648 から 2147483647 は安全に利用できる。
ForeignKey
多対1 のリレーションシップを表す
to: 関連付けるモデルクラス
on_delete: 外部キーで関連付けれられたオブジェクトを削除する場合、on_delete で指定された SQL 制約をエミュレートする。

Choice と Question は 多対 1 の関係になっており、Choice の question を介して 2つのモデルが関連付けられています。

補足
ForeignKey フィールドによって Choice と Question 間のリレーションシップを定義したことによって、
Choice モデルから quetion を介して Question オブジェクトへアクセスできるだけでなく、Question モデルから choice_set を介して Question に関連付けられた複数の Choice オブジェクトにアクセスすることができるようになります。(Related objects を参照)

polls アプリケーションを settings.py に登録します。

manage.py makemigrations を実行してマイグレーションを作成します。

polls/migrations/0001_initial.py が作成されます。ここにモデルの作成や変更の内容が記述されています。

manage.py migrate を実行すると、このファイルに記述された内容に従って SQL 文が生成されて実行されます。生成される SQL 文を確認することのできるコマンドが manage.py sqlmigrate です。

manage.py sqlmigrate

django-admin sqlmigrate app_label migration_name

app_label: アプリケーション名
migration_name: マイグレーション名(マイグレーションファイルの冒頭に付された番号)

manage.py sqlmigrate を実行してみます。

マイグレーションを実行します。

polls_question, polls_choice の2つのテーブルが作成されました。

次回は、Django チュートリアルの進め方 その 2 (2) です。

参考

低価格なのに高速・多機能・高セキュリティ 月額400円(税別)から最大容量100GB WordPress専用高速サーバー Z.com WP
おすすめの記事