カテゴリ: 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
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でデータベースエラーを処理する方法!初心者にもわかる例外の使い方