Django ModelForm入門|初心者でもわかる基本構造と使い方
生徒
「Webアプリで入力フォームを作るって難しそうです。Djangoではどうやるんですか?」
先生
「Djangoには、データベースと連動したフォームを簡単に作れるModelFormという仕組みがあります。」
生徒
「コードをたくさん書かなくても大丈夫なんですか?」
先生
「はい。ModelFormを使うと、必要最低限のコードだけでフォーム作成から保存までできます。」
1. Django ModelFormとは何か
Django ModelFormとは、Djangoのモデルと呼ばれるデータベース設計図から、自動で入力フォームを作ってくれる仕組みです。たとえば、名前やメールアドレスを書く紙の申込書を想像してください。その紙を毎回手書きで作るのは大変ですが、ModelFormはその紙を自動で用意してくれる便利な道具です。
Django、ModelForm、フォーム処理、データベース連携といったキーワードは、Webアプリ開発ではとても重要です。初心者の方でも、この仕組みを理解すれば、入力画面の作成が一気に楽になります。
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の基本的な書き方
ModelFormは、先ほど作ったモデルを元にしてフォームを作ります。フォームとは、画面に表示される入力欄のことです。紙の申込書をパソコン画面にしたものだと考えると分かりやすいです。
from django import forms
from .models import Person
class PersonForm(forms.ModelForm):
class Meta:
model = Person
fields = ["name", "age"]
Metaクラスは、設定を書くための箱です。どのモデルを使うか、どの項目を表示するかを指定しています。これだけで、名前と年齢の入力フォームが完成します。
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. 入力内容を保存する仕組み
フォームに入力された内容を保存するのも、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. テンプレートでフォームを表示する
テンプレートは、画面の見た目を作る場所です。HTMLという言語を使いますが、ModelFormを使えば細かい入力欄を書く必要はありません。
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">送信</button>
</form>
csrf_tokenはセキュリティ対策のお守りです。as_pは、フォームを自動で見やすく並べてくれる便利な機能です。
7. ModelFormを使うメリット
Django ModelFormを使う最大のメリットは、コード量が少なくなることです。手作業でフォームを作るとミスが増えますが、ModelFormならモデルと連動しているため安心です。
また、Django、ModelForm、フォーム処理、初心者向けといった検索キーワードでも多く使われており、学習情報が豊富なのも特徴です。
8. 初心者がつまずきやすいポイント
初心者の方がつまずきやすいのは、モデル、フォーム、ビューの役割の違いです。モデルは設計図、フォームは入力用紙、ビューは受付係と考えると整理しやすくなります。
ModelFormは、それらをつなぐ橋のような存在です。一つずつ役割を意識して理解すると、Djangoの仕組みが自然と見えてきます。