ModelFormとMeta.fieldsの宣言
数行でフォームをモデルにバインドします
「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 PostMetaクラス
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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ModelFormとMeta.fieldsの宣言
- form.save()とcommit=False
- cleanメソッドによるカスタムバリデーション
- Widgets、Labels、Help Text