1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Djangoのフォームフィールドと使える引数一覧

Last updated at Posted at 2025-01-26

Django4.2.2です。

はじめに

こんな感じで使うフィールドについて、いろいろ種類があってまとめてみたくなったのでまとめます。

forms.py
from django import forms

class HelloForm(forms.Form):
    name = forms.CharField(label='name', widget=forms.TextInput(attrs={'class': 'form-control'}))
    mail = forms.EmailField(label='mail', widget=forms.TextInput(attrs={'class': 'form-control'}))
    age = forms.IntegerField(label='age', widget=forms.NumberInput(attrs={'class': 'form-control'}))

因みにですが、私の環境では(前略}/Python313/Lib/site-packages/django/forms/fields.pyに定義が書いてあるらしく、それを見ながら書いています。危ういところが多いのでコメントください。

フィールド一覧

Djangoのフィールドはクラス単位でまとめられています。
以下、継承している場合はPythonの書き方と同様にSubclass(Superclass)と表現します。
当然継承元にいる引数も使えます。

Filed

全てのフィールドの元となるフィールドです。こいつそのものもforms.Field()として使用出来ますが、これを継承し特長を追加した後述のフィールドたちを目的に併せて適切に使うのが正しいと思います。

引数 説明 デフォルト値
required 必須項目かどうか True
widget htmlのinput要素やcssクラスなど None
label フォームに表示されるラベル名。指定しない場合はフォームクラスの変数名がラベルとして採用される。 None
initial 初期値 None
help_text そのフィールドの説明書き、入力欄の下とかに表示される。 空文字
error_messages エラー時メッセージ、辞書型で渡してデフォルトで入っているものをオーバーライドする。 None
show_hidden_initial Trueにするとそのフィールドの初期値を持つ隠しフィールドが追加され、POSTしたときに一緒に送信されるようになるらしい。初期値から変更があったかどうかを判断したいときに使えそう。 False
validators 追加のバリデータ ()
localize 日付の表示形式などがPCの設定に沿ったものになる False
disabled 編集不可な項目か  False
label_suffix ラベル文字列に追加される文字列、ラベル名はlabel+suffi_labelにより作られる文字列になる None

CharField(Field)

文字列を入力するためのフィールドです。

引数 説明 デフォルト値
max_length 最大文字数 None
min_length 最小文字数 None
strip 両端の空白を切り取るか True
empty_value 空白の場合のデフォルト値 空文字

IntegerField(Field)

整数を入力するためのフィールドです。

引数 説明 デフォルト値
max_value 最大値 None
min_value 最小値 None
step_size 1目盛りの絶対値、例えば2を指定すると、{-4,-2,0,2,4,...}が入力可能な値になる。 None(1の動きだが?)

FloatField(IntegerField)

実数を入力するためのフィールドです。

DecimalField(IntegerField)

実数を入力するためのフィールドです。

BaseTemporalField(Field)

日時や時間を入力するためのフィールドクラスの元となるクラスです。これそのものを直接使用することはないと思います。

DateField(BaseTemporalField)

日付を入力するためのフィールドです。

TimeField(BaseTemporalField)

時刻を入力するためのフィールドです。

DateTimeField(BaseTemporalField)

日付と時刻を入力するためのフィールドです。

DurationField(Field)

期間を入力するためのフィールドです。

RegexField(CharField)

正規表現パターンに一致する文字列を入力するためのフィールドです。

引数 説明 デフォルト値
regex 正規表現

EmailField(CharField)

Emailを入力するためのフィールドです。

FileField(Field)

ファイルを入力するためのフィールドです。

引数 説明 デフォルト値
max_length ファイル名の最大文字数 None
allow_empty_file 空のファイルを許容するか False

ImageField(Field)

画像を入力するためのフィールドです。

URLField(CharField)

URLを入力するためのフィールドです。

BooleanField(Field)

「はい」か「いいえ」で答えられるようなものを入力するためのフィールドです。チェックボックスが出ます。

NullBooleanField(BooleanField)

「はい」か「いいえ」か「分からない」で答えられるようなものを入力するためのフィールドです。プルダウンが出ます。

ChoiceField(Field)

いくつかの選択肢から1つ選ぶようなものを入力するためのフィールドです。プルダウンが出ます。

引数 説明 デフォルト値
choices 選択肢 ()

MultipleChoiceField(ChoiceField)

いくつかの選択肢から1つ以上選ぶようなものを入力するためのフィールドです。プルダウンが出ますが、生で出すとCtrlを押しながらじゃな無い限り複数選択出来ません。

たくさんある

まだたくさんありますが疲れたので休みます。
気が向いたら書き進めます

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?