カテゴリ: 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
Python
Pythonでセットの要素数を調べる方法(len()の使い方)を初心者向けに解説!
New2
Python
Pythonのfrozensetとは?ミュータブルなsetとの違いをわかりやすく解説
New3
Flask
FlaskでPOSTリクエストを受け取る方法!初心者でもわかるJSONデータの受け取り方
New4
Python
Pythonでセットを活用してデータをフィルタリングする方法!初心者でもわかるセットの基本と使い方
人気記事
No.1
Java&Spring記事人気No1
Flask
Flaskとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
No.2
Java&Spring記事人気No2
Python
Pythonでトランザクション処理を実装する方法を完全解説!commit・rollbackで安全なSQL操作
No.3
Java&Spring記事人気No3
Python
Pythonで仮想環境(venv)を作る方法!初心者向けに環境構築をステップ解説
No.4
Java&Spring記事人気No4
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.5
Java&Spring記事人気No5
Flask
FlaskでAPIを作る基本!初心者向けに仕組みと特徴をやさしく解説
No.6
Java&Spring記事人気No6
Flask
Flask‑RESTfulでREST APIを構築する手順まとめ!初心者向けにやさしく解説
No.7
Java&Spring記事人気No7
Python
Pythonの文字列から一部を抽出する方法!スライスを使った基本的な切り出し方
No.8
Java&Spring記事人気No8
Flask
FlaskのSQLAlchemyでフィルタリング検索!filter, filter_byの使い方完全ガイド