1. ホーム
  2. django

[解決済み] Django の forms.Form と forms.ModelForm の比較

2023-03-27 02:33:10

質問

どなたか、Django の forms.Form & です。 forms.ModelForm ?

どのように解決するのですか?

で作成したフォームを forms.Form から作成されたフォームは、あなたによって手動で設定されます。モデルとの直接のやりとりがないフォームのために、これらを使うのがよいでしょう。 たとえば、問い合わせフォームやニュースレターの購読フォームなど、必ずしもデータベースとやりとりする必要がないようなフォームです。

から作成されたフォームが forms.ModelForm から作成されたフォームは自動的に作成され、後であなたが手を加えることができます。最良の例は、Django の Web サイトで提供されている素晴らしいドキュメントから得られます。

forms.Form :

ドキュメンテーション フォームオブジェクト

で作成された通常のフォームの例です。 forms.Form :

from django import forms

class ContactForm(forms.Form):
    subject = forms.CharField(max_length=100)
    message = forms.CharField()
    sender = forms.EmailField()
    cc_myself = forms.BooleanField(required=False)

forms.ModelForm :

ドキュメンテーション モデルからフォームを作成する

ドキュメントから直接。

もしあなたのフォームが Django モデルを直接追加したり編集したりするのに使われるなら を使うことができます。 ModelForm を使って を使えば、モデルの記述が重複するのを防げます。

で作成したモデルフォームの例です。 forms.Modelform :

from django.forms import ModelForm
from . import models

# Create the form class.
class ArticleForm(ModelForm):
    class Meta:
        model = models.Article

このフォームには、自動的に Article モデルから作成されたものと同じフィールドタイプを自動的に持ちます。