Django Academy · レッスン

ModelFormとMeta.fieldsの宣言

数行でフォームをモデルにバインドします

レッスン 1/413 ステップ

「ModelFormとMeta.fieldsの宣言」はCoddyKit上の無料Django Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDjango Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Django Academyコースには全4レッスンが含まれています。

ModelFormが存在する理由

データを表すモデルはすでにあります。ModelFormなら、そのモデルから直接フォームを作れるため、同じフィールドを二度書かずに済みます。🎯

ModelFormをインポートする

ModelFormは通常のフォームと同じ場所にあります。モデル対応版を使うには、forms.Formではなくforms.ModelFormを継承します。

from django import forms
from .models import Post

Metaクラス

ModelFormには内部Metaクラスが必要です。Metaでは、どのモデルからフォームを作るか、どのフィールドを含めるかを指定します。

class PostForm(forms.ModelForm):
    class Meta:
        model = Post
        fields = ["title", "body"]

モデルを指定する

model属性には、フォームが対応するクラスを指定します。Djangoはそのモデルのフィールドを読み取り、フォーム入力を自動生成します。

class Meta:
    model = Post

フィールドを明示的に列挙する

fieldsリストで、どのモデルフィールドをフォーム入力にするかを正確に指定します。名前を明示すると、意図しない変更を防げます。

fields = ["title", "body", "published"]

短縮方法:fields = all

fieldsに文字列"__all__"を設定すると、すべてのモデルフィールドが含まれます。デモでは便利ですが、新しいモデルフィールドも自動的に追加されるため危険です。

class Meta:
    model = Post
    fields = "__all__"

除外する方法

excludeを使えば、いくつかのフィールド以外をすべて含めることもできます。明確さを保つため、可能なら明示的なfieldsリストを使ってください。

class Meta:
    model = Post
    exclude = ["author"]

ウィジェットの自動生成

Djangoは各フィールドに適切なwidgetを自動的に選びます。CharFieldはテキストボックスに、BooleanFieldはチェックボックスになります。

バリデーションも自動で適用される

モデルのルールも引き継がれます。requiredや最大長が設定されたフィールドでは、同じvalidationがフォームにも自動的に適用されます。

ビューで使う

ビューでは、通常のフォームと同じようにフォームを作成します。空のPostForm()を使うと、ユーザーが入力できる空の入力欄が表示されます。

def create(request):
    form = PostForm()
    return render(request, "create.html", {"form": form})

インスタンスに紐付ける

instanceに既存のオブジェクトを渡すと、フォームにその値があらかじめ入力されます。同じModelFormで作成と編集の両方に対応できます。

form = PostForm(instance=post)

簡単な確認

ModelFormで使用するモデルとフィールドは、どこで指定しますか?

まとめ:ModelFormの基本

よくできました!ModelFormは、modelとfieldsを指定した内部Metaを使ってモデルからフォームを作成します。重複した記述を省き、バリデーションも自動的に引き継げます。✨

無料で開始

AI チューターと学ぶ Python — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
30
レッスン
120

よくある質問

「ModelFormとMeta.fieldsの宣言」レッスンは無料ですか?

はい。「ModelFormとMeta.fieldsの宣言」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Django Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Django Academyコースには全4レッスンが含まれています。

「ModelFormとMeta.fieldsの宣言」で何を学びますか?

数行でフォームをモデルにバインドします ブラウザで直接実行するハンズオンコードでDjango Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Django Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのDjango Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「ModelFormとMeta.fieldsの宣言」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このDjango Academyレッスンでコードを書いて実行できますか?

はい。すべてのDjango Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. ModelFormとMeta.fieldsの宣言
  2. form.save()とcommit=False
  3. cleanメソッドによるカスタムバリデーション
  4. Widgets、Labels、Help Text
← Django Academyに戻る