Django4.2.2です。
はじめに
こんな感じで使うフィールドについて、いろいろ種類があってまとめてみたくなったのでまとめます。
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を押しながらじゃな無い限り複数選択出来ません。
たくさんある
まだたくさんありますが疲れたので休みます。
気が向いたら書き進めます