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

Django ModelFormの使い方を初心者向けに完全解説|models.pyと連携してフォームを自動生成しよう

Django ModelFormでフォームを自動生成する方法|models.pyとの連携
Django ModelFormでフォームを自動生成する方法|models.pyとの連携

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

生徒

「Djangoで入力フォームを作るって聞いたんですけど、何を書けばいいのか全然わかりません…」

先生

「Djangoには ModelForm という仕組みがあって、難しいことを書かなくてもフォームを作れます。」

生徒

「フォームって、名前やメールアドレスを入力するあの画面ですよね?」

先生

「その通りです。今回は、models.py と連携してフォームを自動生成する方法を、ゆっくり説明します。」

1. Django ModelFormとは何か?

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

Django ModelFormとは、データベースの設計図である モデル(Model) を元にして、入力フォームを自動で作ってくれる仕組みです。

たとえるなら、「申込用紙を作るとき、名簿の項目を見て自動で用紙を作ってくれるロボット」のような存在です。

通常、フォームを一から作るのは大変ですが、ModelFormを使うと Django フォーム処理 がとても楽になります。

2. models.pyとは?データの設計図

2. models.pyとは?データの設計図
2. models.pyとは?データの設計図

models.py は、データベースに保存する内容を決めるファイルです。

たとえば「名前」と「年齢」を保存したい場合、次のように書きます。


from django.db import models

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

CharField は文字、IntegerField は数字を意味します。max_length は「最大何文字までか」を決めています。

3. ModelFormでフォームを自動生成する仕組み

3. ModelFormでフォームを自動生成する仕組み
3. ModelFormでフォームを自動生成する仕組み

ModelFormは、この Person モデルを見て「名前入力欄」と「年齢入力欄」を自動で作ります。

つまり、同じ内容を二度書かなくてよい、というのが大きなメリットです。

Django 初心者にとって、ミスを減らせる便利な機能です。

4. forms.pyを作ってModelFormを書く

4. forms.pyを作ってModelFormを書く
4. forms.pyを作ってModelFormを書く

次に、アプリの中に forms.py というファイルを作ります。

ここに ModelForm を定義します。


from django import forms
from .models import Person

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

Meta クラスは「設定を書く場所」です。どのモデルを使うか、どの項目をフォームに出すかを指定します。

5. views.pyでModelFormを使う

5. views.pyでModelFormを使う
5. views.pyでModelFormを使う

次は views.py でフォームを表示し、入力内容を保存します。


from django.shortcuts import render, redirect
from .forms import PersonForm

def create_person(request):
    if request.method == 'POST':
        form = PersonForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('success')
    else:
        form = PersonForm()
    return render(request, 'person_form.html', {'form': form})

POST は「入力して送信したとき」、それ以外は「最初に画面を開いたとき」です。

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

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

HTMLファイルでは、Django テンプレートを使ってフォームを表示します。


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

{{ form.as_p }} は、フォームを段落形式で表示する命令です。

csrf_token はセキュリティ対策で、Django フォーム処理では必須です。

7. ModelFormを使うメリット

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

Django ModelFormを使うと、次のような良い点があります。

  • フォーム作成がとても簡単
  • モデルと連動しているのでミスが少ない
  • Django 初心者でも安全に使える

特に models.py と連携したフォーム自動生成 は、Django 学習で必ず覚えたいポイントです。

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

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

よくある間違いは、forms.py を作り忘れることや、Meta クラスを書き忘れることです。

また、HTMLで method="post" を書かないと、データは送信されません。

一つ一つ確認しながら進めるのが大切です。

カテゴリの一覧へ
新着記事
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
Python
Pythonの文字列から一部を抽出する方法!スライスを使った基本的な切り出し方