カテゴリ: Django 更新日: 2026/02/11

Django ModelForm入門|初心者でもわかる基本構造と使い方

Django ModelForm入門|初心者でもわかる基本構造と使い方
Django ModelForm入門|初心者でもわかる基本構造と使い方

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

生徒

「Webアプリで入力フォームを作るって難しそうです。Djangoではどうやるんですか?」

先生

「Djangoには、データベースと連動したフォームを簡単に作れるModelFormという仕組みがあります。」

生徒

「コードをたくさん書かなくても大丈夫なんですか?」

先生

「はい。ModelFormを使うと、必要最低限のコードだけでフォーム作成から保存までできます。」

1. Django ModelFormとは何か

1. Django ModelFormとは何か
1. Django ModelFormとは何か

Django ModelFormとは、Djangoのモデルと呼ばれるデータベース設計図から、自動で入力フォームを作ってくれる仕組みです。たとえば、名前やメールアドレスを書く紙の申込書を想像してください。その紙を毎回手書きで作るのは大変ですが、ModelFormはその紙を自動で用意してくれる便利な道具です。

Django、ModelForm、フォーム処理、データベース連携といったキーワードは、Webアプリ開発ではとても重要です。初心者の方でも、この仕組みを理解すれば、入力画面の作成が一気に楽になります。

2. ModelFormで使われるモデルとは

2. ModelFormで使われるモデルとは
2. ModelFormで使われるモデルとは

モデルとは、データベースに保存する情報の設計図です。たとえば「名前」「年齢」「メモ」など、箱の中に何を入れるかを決めるイメージです。Djangoでは、このモデルをPythonのコードで書きます。


from django.db import models

class Person(models.Model):
    name = models.CharField(max_length=50)
    age = models.IntegerField()

このコードは、「Person」という人の情報を表すモデルです。CharFieldは文字、IntegerFieldは数字を意味します。専門用語が出てきましたが、型というのは「何が入る箱か」を決めるルールだと考えてください。

3. ModelFormの基本的な書き方

3. ModelFormの基本的な書き方
3. ModelFormの基本的な書き方

ModelFormは、先ほど作ったモデルを元にしてフォームを作ります。フォームとは、画面に表示される入力欄のことです。紙の申込書をパソコン画面にしたものだと考えると分かりやすいです。


from django import forms
from .models import Person

class PersonForm(forms.ModelForm):
    class Meta:
        model = Person
        fields = ["name", "age"]

Metaクラスは、設定を書くための箱です。どのモデルを使うか、どの項目を表示するかを指定しています。これだけで、名前と年齢の入力フォームが完成します。

4. ビューでModelFormを使う方法

4. ビューでModelFormを使う方法
4. ビューでModelFormを使う方法

ビューとは、画面表示や処理を担当する場所です。ModelFormはビューの中で使われ、入力された内容をチェックしたり、保存したりします。


from django.shortcuts import render
from .forms import PersonForm

def person_create(request):
    form = PersonForm()
    return render(request, "person_form.html", {"form": form})

このコードでは、空のフォームを作って画面に渡しています。renderとは「画面に表示する」という意味です。辞書の形でフォームをテンプレートに渡しています。

5. 入力内容を保存する仕組み

5. 入力内容を保存する仕組み
5. 入力内容を保存する仕組み

フォームに入力された内容を保存するのも、ModelFormなら簡単です。保存とは、データベースという大きな引き出しに情報をしまうことです。


def person_create(request):
    if request.method == "POST":
        form = PersonForm(request.POST)
        if form.is_valid():
            form.save()
    else:
        form = PersonForm()
    return render(request, "person_form.html", {"form": form})

POSTとは「送信されたデータ」という意味です。is_validは「入力に問題がないか」を確認する仕組みで、合格したらsaveで保存します。

6. テンプレートでフォームを表示する

6. テンプレートでフォームを表示する
6. テンプレートでフォームを表示する

テンプレートは、画面の見た目を作る場所です。HTMLという言語を使いますが、ModelFormを使えば細かい入力欄を書く必要はありません。


<form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">送信</button>
</form>

csrf_tokenはセキュリティ対策のお守りです。as_pは、フォームを自動で見やすく並べてくれる便利な機能です。

7. ModelFormを使うメリット

7. ModelFormを使うメリット
7. ModelFormを使うメリット

Django ModelFormを使う最大のメリットは、コード量が少なくなることです。手作業でフォームを作るとミスが増えますが、ModelFormならモデルと連動しているため安心です。

また、Django、ModelForm、フォーム処理、初心者向けといった検索キーワードでも多く使われており、学習情報が豊富なのも特徴です。

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

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

初心者の方がつまずきやすいのは、モデル、フォーム、ビューの役割の違いです。モデルは設計図、フォームは入力用紙、ビューは受付係と考えると整理しやすくなります。

ModelFormは、それらをつなぐ橋のような存在です。一つずつ役割を意識して理解すると、Djangoの仕組みが自然と見えてきます。

カテゴリの一覧へ
新着記事
New1
Django
Djangoバリデーション完全入門|cleanメソッドで学ぶカスタムチェックの書き方【初心者向け】
New2
Flask
FlaskとAWS S3を連携!静的ファイルを効率よく配信する初心者向け完全ガイド
New3
Python
Pythonで例外の種類ごとに処理を分ける方法を完全解説!初心者でもわかる複数except入門
New4
Python
Pythonでリストの要素を検索・取得する方法!index()やin演算子の活用法
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
No.2
Java&Spring記事人気No2
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.3
Java&Spring記事人気No3
Flask
Flask-Loginでユーザー認証を完全ガイド!初心者でもわかるログイン処理の作り方
No.4
Java&Spring記事人気No4
Flask
Flaskでデータベースを使う基本!SQLAlchemyの導入方法をやさしく解説
No.5
Java&Spring記事人気No5
Python
Pythonのコーディング規約(PEP8)とは?初心者でもわかる書き方の基本ルール
No.6
Java&Spring記事人気No6
Python
Pythonで空白や不要な文字を削除する方法!strip(), rstrip(), lstrip() の使い方を初心者向けに解説
No.7
Java&Spring記事人気No7
Flask
Flaskでフロントエンドからファイルアップロードを行う基本手順【初心者向け】
No.8
Java&Spring記事人気No8
Flask
Flaskでデータベースエラーを処理する方法!初心者にもわかる例外の使い方