カテゴリ: Django 更新日: 2026/01/29

Djangoモデル作成手順|models.pyの書き方と基本パターンを初心者向けに解説

Djangoモデル作成手順|models.pyの書き方と基本パターン
Djangoモデル作成手順|models.pyの書き方と基本パターン

先生と生徒の会話形式で理解しよう

生徒

「Django(ジャンゴ)でデータを保存する仕組みって、どうやって作るんですか?」

先生

「Djangoでは、モデル(Model:モデル)という仕組みを使って、データベースの設計をします。これは設計図のようなものです。」

生徒

「設計図ってことは、難しそうですね……」

先生

「大丈夫です。models.py(モデルズ・パイ)に決まった書き方で書くだけなので、順番に見ていきましょう。」

1. Djangoモデルとは何かを超かんたんに理解しよう

1. Djangoモデルとは何かを超かんたんに理解しよう
1. Djangoモデルとは何かを超かんたんに理解しよう

Django(ジャンゴ)のモデルとは、データベースに保存する情報の形を決めるものです。たとえば「名前」「年齢」「メールアドレス」などを、どのように保存するかを定義します。

現実世界でたとえると、モデルは「申込用紙」のような存在です。どんな項目を書くのかを先に決めておかないと、正しく情報を集められません。

Djangoでは、このモデルを使ってデータベース操作を自動化します。この仕組みをORM(オーアールエム:Object Relational Mapping)と呼びます。難しく聞こえますが、「Pythonコードでデータベースを操作できる仕組み」と考えて大丈夫です。

2. models.pyとは?ファイルの役割を理解しよう

2. models.pyとは?ファイルの役割を理解しよう
2. models.pyとは?ファイルの役割を理解しよう

models.py(モデルズ・パイ)は、Djangoアプリの中に最初から用意されているファイルです。このファイルにモデルを書きます。

models.pyは「このアプリでは、どんなデータを扱いますか?」をDjangoに伝える場所です。ここに書いた内容を元に、Djangoが自動でデータベース用の命令を作ってくれます。

つまり、models.pyはデータベースとDjangoをつなぐ、とても重要なファイルなのです。

3. モデル作成の基本パターンを見てみよう

3. モデル作成の基本パターンを見てみよう
3. モデル作成の基本パターンを見てみよう

Djangoモデルは、Pythonのclass(クラス)を使って作成します。クラスとは「設計図」のことです。

まずは、最も基本的なモデルの例を見てみましょう。


from django.db import models

class User(models.Model):
    name = models.CharField(max_length=100)
    age = models.IntegerField()

この例では、User(ユーザー)というモデルを作っています。nameは文字、ageは数字として保存されます。

CharField(キャラクター・フィールド)は文字列、IntegerField(インテジャー・フィールド)は整数を表します。

4. フィールドとは?データの中身を決める部品

4. フィールドとは?データの中身を決める部品
4. フィールドとは?データの中身を決める部品

モデルの中に書くnameやageのようなものを、フィールドと呼びます。フィールドは「1つのデータ項目」です。

たとえば、住所録であれば「名前」「電話番号」「住所」がフィールドになります。


class Book(models.Model):
    title = models.CharField(max_length=200)
    price = models.IntegerField()
    published = models.BooleanField()

BooleanField(ブーリアン・フィールド)は、はい・いいえ(True / False)を保存するためのフィールドです。

5. よく使うオプション指定を覚えよう

5. よく使うオプション指定を覚えよう
5. よく使うオプション指定を覚えよう

Djangoモデルでは、フィールドにオプションを指定できます。これは「入力ルール」を決めるものです。


class Profile(models.Model):
    nickname = models.CharField(max_length=50, blank=True)
    email = models.EmailField(unique=True)

blank=Trueは「空でもOK」という意味です。unique=Trueは「同じ値を登録できない」ことを表します。

EmailField(イーメール・フィールド)は、メールアドレス専用のフィールドです。

6. __str__メソッドで表示をわかりやすくする

6. __str__メソッドで表示をわかりやすくする
6. __str__メソッドで表示をわかりやすくする

Djangoモデルでは、__str__(ストリング)メソッドを定義するのが定番です。これは「人が見たときの表示名」を決めます。


class Category(models.Model):
    name = models.CharField(max_length=100)

    def __str__(self):
        return self.name

これを書いておくと、管理画面などでデータの中身が分かりやすく表示されます。

7. モデル作成からデータベース反映までの流れ

7. モデル作成からデータベース反映までの流れ
7. モデル作成からデータベース反映までの流れ

Djangoでモデルを作る流れは、必ず決まっています。

  1. models.pyにモデルを書く
  2. マイグレーションファイルを作成する
  3. データベースに反映する

この手順を守ることで、Djangoが安全にデータベースを管理してくれます。

8. 初心者がつまずきやすいポイント

8. 初心者がつまずきやすいポイント
8. 初心者がつまずきやすいポイント

models.pyを書いたあとに、反映を忘れてしまう人が多いです。モデルを書いただけでは、まだデータベースには反映されていません。

また、フィールドの種類を間違えると、あとから修正が大変になります。最初はシンプルな設計を意識しましょう。

Djangoモデルは慣れると、とても強力で便利な仕組みです。まずは基本パターンをしっかり身につけることが大切です。

カテゴリの一覧へ
新着記事
New1
Flask
Flaskのログレベル(DEBUG/INFO/WARNING/ERROR)を使い分ける方法を完全ガイド!
New2
Python
Pythonのfrozensetとは?ミュータブルなsetとの違いをわかりやすく解説
New3
Python
Pythonでセットを活用してデータをフィルタリングする方法!初心者でもわかるセットの基本と使い方
New4
Python
Pythonの辞書操作まとめ!初心者が知っておくべき便利ワザ集
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonの文字列から一部を抽出する方法!スライスを使った基本的な切り出し方
No.2
Java&Spring記事人気No2
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.3
Java&Spring記事人気No3
Flask
FlaskアプリのSECRET_KEYの設定方法を完全ガイド!初心者でもわかるセキュリティ対策
No.4
Java&Spring記事人気No4
Flask
Flaskで非同期処理を成功させるベストプラクティス集|初心者でも失敗しない考え方
No.5
Java&Spring記事人気No5
Django
Djangoモデル入門|初心者が最初に知るべきORMの基本操作
No.6
Java&Spring記事人気No6
Flask
Flaskでデータベースを使う基本!SQLAlchemyの導入方法をやさしく解説
No.7
Java&Spring記事人気No7
Python
Pythonのリストを分割する方法を完全ガイド!初心者でもわかるスライス・split・itertoolsの使い方
No.8
Java&Spring記事人気No8
Flask
Flaskのログをファイルに保存する方法!初心者でもわかる設定手順を徹底解説