【Django】models.pyとモデルの書き方を徹底的に解説

Django

(最終更新月:2021年3月)

✔このような方へ向けて書かれた記事となります

「Djangoのmodels.pyって何?役割は?」

「models.py モデルの書き方が知りたい!」

「どうやってモデルをデータベースへ反映させるの?」

✔当記事を通じてお伝えすること

  • Djangoにおけるmodels.py モデルの役割とは?
  • models.py モデルの書き方を一から解説
  • 作成したモデルをデータベースへ反映させる方法

当記事では、当ブログを通じて作成している「日報アプリ」を例としながら、モデルについての基本をお伝えしていきます。

【著者プロフィール】

profile_icon
【Python・Django歴】10年 x 【営業マン歴】11年
HP作成、社内システムの構築、コンサルティング

当ブログを通じて、下記アプリの作り方、コード等を公開、解説しています

☆日報アプリ「D-Repo」(デモ版)→こちら

※Djangoをベースに作成したアプリです

☆便利ツールアプリ「Tool Station」→こちら

※Django REST frameworkとReactで作成しているアプリです

初期費用ゼロ/月9,800円でWebデザインが学べる

デザインを習得するためには、客観的なフィードバックと改善が不可欠です。

以下の記事ではこんなWebデザインスクールをご紹介しています。

  • 初期費用ゼロで、月々9,800円のみ
  • オンラインで、教材が使い放題
  • コンテストや実務案件にチャレンジして報酬もGETできる

デザナルはトップデザイナーからレビューがもらえる、格安のWebデザインスクールです。

>>デザナルに興味がある方はこちらからどうぞ<<

詳細をまとめた記事もございますので、ぜひご覧ください。

Djangoにおけるmodels.py モデルの役割とは?

Webアプリ開発において、Djangoを使うメリットの一つは、データベースとの連携にあります。

通常データベースは、SQLという専用の言語を用いてデータを保存するテーブルやカラムを作成しますが、DjangoではPython言語を用いて記述すれば自動的にSQL言語へ変換データベースへの書き込みができる機能が備わっています。

このデータベースとの連携の役割を担っているのが、モデルであり、モデルのコードを書いていくのがmodels.pyになります。

モデルの作成からデータベースへの反映させるまでの流れは下記の通りです。

  1. モデルの作成(データベースのテーブルに相当)
  2. モデル内のフィールドを作成(データベースのカラムに相当)
  3. Python言語をSQL言語へ変換
  4. テーブルの書き込み

具体的に日報アプリ開発を通じて、コードの記述、解説を進めていきます。

models.py モデルの書き方を一から解説

モデルの作成方法

モデルの作成方法のステップとして、①modelsをインポート②models.Modelを継承したクラスを定義、していきます。

まずは、modelsをインポートします。

from django.db import models

models.Modelを継承したクラスを定義します。

class クラス名(models.Model):
    pass

具体的には下記の通りとなります。

from django.db import models

class NippoModel(models.Model):
    pass

次に「pass」とした部分にフィールドを作っていきます。

フィールドの作成

モデルクラス内のフィールドは、データベースのカラムに相当します。

ただし、models.Modelクラスを継承した際に、プライマリーキーの役割を担う「id」フィールドは自動的に作られていますので、プライマリーキー以外を作ればOKです。

from django.db import models

class NippoModel(models.Model):
    title = models.CharField(max_length=100)
    content = models.CharField(max_length=1000)
    timestamp = models.DateTimeField(auto_now_add=True)

モデルで使用できるフィールドは他にもたくさんあります。下記に全てまとめましたのでご参考にして下さい。

モデルの作成は一旦これで完了とします。

次章で実際にデータベースへ反映させていきます。

作成したモデルをデータベースへ反映させる方法

データベースへ反映させるには2ステップです。

  1. PythonコードをSQLへ変換する
  2. データベースへ実際に書き込みをする

PythonコードをSQLへ変換する

ターミナルを開き、「manage.py」ファイルのあるフォルダへ移動し下記を実行します。

python manage.py makemigrations

下記の通り表示されれば、成功です。

Migrations for 'nippo':
  nippo/migrations/0001_initial.py
    - Create model NippoModel

作成したクラスがmigrationsファイルへ変換されました。

migrationsファイルは下記の通りです。

from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='NippoModel',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('title', models.CharField(max_length=100)),
                ('content', models.CharField(max_length=1000)),
                ('timestamp', models.DateTimeField(auto_now_add=True)),
            ],
        ),
    ]

nippo > migrations > 0001_initial.py

モデル内に記述した3つのフィールドと、プライマリーキー「id」フィールドの4つが反映されているのがわかります。

いよいよデータベースへ書き込みをしていきましょう。

データベースへ実際に書き込みをする

「manage.py」があるフォルダ上のターミナルで下記を実行します。

python manage.py migrate

下記のような出力であれば、成功です。

Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying ...
  Applying ...
  ..
  Applying nippo.0001_initial... OK
  ..

これで、作成したモデルをデータベースへ反映させることができました。

まとめ

当記事の内容をまとめます。

Webアプリ開発において、Djangoを使うメリットの一つは、データベースとの連携にあります。

データベースとの連携おいて重要な役割を担っているのが、モデルであり、モデルのコードを書いていく、models.pyになります。

models.py上でモデルの書き方からデータベースへ反映させる流れは下記の通りです。

  1. models.Modelの継承クラス作成
  2. 作成したクラスでフィールドの設定
  3. 作成したクラスをSQLへ変換「makemigrations
  4. テーブル、カラムの書き込み「migrate

どんな複雑なモデルでもこの流れで完了するのでここでマスターしてしまいましょう。

ただし、モデルフィールドはまだまだ他にも存在します。

色々と知ることでモデル設計の幅も広がりますので、興味のある方は下記もご覧ください。

さて、これでモデルの基本についての解説は完了ですが、作成しただけだと本当にテーブルが作られているか実感できませんよね?

次のステップとして、管理画面へアクセスし、作成したモデルが反映されたかどうか確認する方法を理解する必要があります。

下記の記事にて、ブラウザからデータベースの読み書きなどができる「Admin(管理者)ページ」へのアクセスとその設定方法をお伝えします。

当ブログでは、日報アプリ開発を通じて、Webアプリを一から開発し公開するまでを初学者の方でもわかるようにと記事を連載しています

「Djangoでのアプリ開発を学びたい!」
「Djangoで開発したアプリをWebで公開するにはどうするの?」

という方は必見です!

【Django】チュートリアル|日報アプリの開発から公開まで
Djangoのチュートリアルをお探しですか?具体的に「手を動かして作ってみたい!」という方へ向けて、誰でもできる簡易的な日報アプリの開発を通じて、Djangoの様々な機能に触れていくシリーズとなっています。PythonでWebアプリを作りたい方、必見の記事となります!
タイトルとURLをコピーしました