... えるとわかりやすいでしょう。次のようなフォームがあるとしましょう: >>> from django import forms >>> class ArticleForm ( forms . Form ): ... title = forms . CharField () ... pub_date = forms . DateField () ... ユーザーが ... 事を作成できるようにしたいと思うかもしれません。 ArticleForm からフォームセットを作るには、次のようにします: >>> from django.forms import formset_factory >>> ArticleFormSet = formset_factory ( ArticleForm ) これで ArticleFormSet という名前のフォームセッ ... ームセットをインスタンス化することで、フォームセット内のフォームをイテレートし、通常のフォームと同じように表示できます: >>> formset = ArticleFormSet () >>> for form in formset : ... print ( form ) ... <div><label for="id_form-0-title">Title:</label><in ... ... えるとわかりやすいでしょう。次のようなフォームがあるとしましょう: >>> from django import forms >>> class ArticleForm ( forms . Form ): ... title = forms . CharField () ... pub_date = forms . DateField () ... ユーザーが ... 事を作成できるようにしたいと思うかもしれません。 ArticleForm からフォームセットを作るには、次のようにします: >>> from django.forms import formset_factory >>> ArticleFormSet = formset_factory ( ArticleForm ) これで ArticleFormSet という名前のフォームセッ ... ームセットをインスタンス化することで、フォームセット内のフォームをイテレートし、通常のフォームと同じように表示できます: >>> formset = ArticleFormSet () >>> for form in formset : ... print ( form ) ... <div><label for="id_form-0-title">Title:</label><in ... ... かし、フィールドに別のウィジェットを使用したい場合は、フィールド定義で widget 引数を使用できます。例えば: from django import forms class CommentForm ( forms . Form ): name = forms . CharField () url = forms . URLField () comment = forms . CharField ( wi ... dget = forms . Textarea ) これは、comment のフォームに対して、デフォルトの TextInput ウィジェットではなく、より大きなサイズの Textarea ... ェットを定義する際にセットできます。以下の例では、 SelectDateWidget に対して years 属性がセットされます: from django import forms BIRTH_YEAR_CHOICES = [ "1980" , "1981" , "1982" ] FAVORITE_COLORS_CHOICES = { "blue" : "Blue" , "green" : "Green" , "black ... ... かし、フィールドに別のウィジェットを使用したい場合は、フィールド定義で widget 引数を使用できます。例えば: from django import forms class CommentForm ( forms . Form ): name = forms . CharField () url = forms . URLField () comment = forms . CharField ( wi ... dget = forms . Textarea ) これは、comment のフォームに対して、デフォルトの TextInput ウィジェットではなく、より大きなサイズの Textarea ... ェットを定義する際にセットできます。以下の例では、 SelectDateWidget に対して years 属性がセットされます: from django import forms BIRTH_YEAR_CHOICES = [ "1980" , "1981" , "1982" ] FAVORITE_COLORS_CHOICES = { "blue" : "Blue" , "green" : "Green" , "black ... ... ds.base.SessionBase のメソッド) AdminEmailHandler (django.utils.log のクラス) AdminPasswordChangeForm (django.contrib.auth.forms のクラス) ADMINS setting AdminSite (django.contrib.admin のクラス) AdminUserCreationForm (django.contrib.auth.forms のクラ ... o.contrib.postgres.expressions のクラス) as_data() (Form.errors のメソッド) as_datetime() (Field のメソッド) as_div() (BaseFormSet のメソッド) (Form のメソッド) as_double() (Field のメソッド) as_field_group() (BoundField のメソッド) as_hidden() (Bound ... Field のメソッド) as_json() (Form.errors のメソッド) as_manager() (django.db.models.query.QuerySet モジュール) as_p() (BaseFormSet のメソッド) (Form のメソッド) as_sql() (django.db.models モジュール) (Func のメソッド) as_string() (Field のメソッド) as ... ... ds.base.SessionBase のメソッド) AdminEmailHandler (django.utils.log のクラス) AdminPasswordChangeForm (django.contrib.auth.forms のクラス) ADMINS setting AdminSite (django.contrib.admin のクラス) AdminUserCreationForm (django.contrib.auth.forms のクラ ... o.contrib.postgres.expressions のクラス) as_data() (Form.errors のメソッド) as_datetime() (Field のメソッド) as_div() (BaseFormSet のメソッド) (Form のメソッド) as_double() (Field のメソッド) as_field_group() (BoundField のメソッド) as_hidden() (Bound ... Field のメソッド) as_json() (Form.errors のメソッド) as_manager() (django.db.models.query.QuerySet モジュール) as_p() (BaseFormSet のメソッド) (Form のメソッド) as_sql() (django.db.models モジュール) (Func のメソッド) as_string() (Field のメソッド) as ... ... メソッドがあり、 django.core.exceptions.ValidationError 例外を発生させるか、クリーンな値を返します。 >>> from django import forms >>> f = forms . EmailField () >>> f . clean ( "foo@example.com" ) 'foo@example.com' >>> f . clean ( "invalid email address ... め、空の値 ( None もしくは空文字列 ( "" )) を渡すと、 clean() は ValidationError 例外を発生させます。 >>> from django import forms >>> f = forms . CharField () >>> f . clean ( "foo" ) 'foo' >>> f . clean ( "" ) Traceback (most recent call last): ... Val ... n ( False ) 'False' フィールドが必須で ない ことを指定するには、 Field コンストラクタに required=False を渡します: >>> f = forms . CharField ( required = False ) >>> f . clean ( "foo" ) 'foo' >>> f . clean ( "" ) '' >>> f . clean ( None ) '' >>> f . c ... ... メソッドがあり、 django.core.exceptions.ValidationError 例外を発生させるか、クリーンな値を返します。 >>> from django import forms >>> f = forms . EmailField () >>> f . clean ( "foo@example.com" ) 'foo@example.com' >>> f . clean ( "invalid email address ... め、空の値 ( None もしくは空文字列 ( "" )) を渡すと、 clean() は ValidationError 例外を発生させます。 >>> from django import forms >>> f = forms . CharField () >>> f . clean ( "foo" ) 'foo' >>> f . clean ( "" ) Traceback (most recent call last): ... Val ... n ( False ) 'False' フィールドが必須で ない ことを指定するには、 Field コンストラクタに required=False を渡します: >>> f = forms . CharField ( required = False ) >>> f . clean ( "foo" ) 'foo' >>> f . clean ( "" ) '' >>> f . clean ( None ) '' >>> f . c ... ... 、Django モデルから Form クラスを生成できるようなヘルパークラスを用意してあります。 例えば次のようにします: >>> from django.forms import ModelForm >>> from myapp.models import Article # Create the form class. >>> class ArticleForm ( ModelForm ): ... cl ... Field SlugField SmallAutoField フォーム上では表示されません。 SmallIntegerField IntegerField TextField CharField で widget=forms.Textarea です。 TimeField TimeField URLField URLField UUIDField UUIDField お気付きかもしれませんが、 ForeignKey と ManyToM ... anyField の 2 つのモデルフィールドは特殊なケースとなります: ForeignKey は django.forms.ModelChoiceField によって表現され、モデルの QuerySet を選択肢として持つ ChoiceField です。 ManyToManyField は django.forms ... ... 、Django モデルから Form クラスを生成できるようなヘルパークラスを用意してあります。 例えば次のようにします: >>> from django.forms import ModelForm >>> from myapp.models import Article # Create the form class. >>> class ArticleForm ( ModelForm ): ... cl ... Field SlugField SmallAutoField フォーム上では表示されません。 SmallIntegerField IntegerField TextField CharField で widget=forms.Textarea です。 TimeField TimeField URLField URLField UUIDField UUIDField お気付きかもしれませんが、 ForeignKey と ManyToM ... anyField の 2 つのモデルフィールドは特殊なケースとなります: ForeignKey は django.forms.ModelChoiceField によって表現され、モデルの QuerySet を選択肢として持つ ChoiceField です。 ManyToManyField は django.forms ... 2026年10月08日