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を押しながらじゃな無い限り複数選択出来ません。
たくさんある
まだたくさんありますが疲れたので休みます。
気が向いたら書き進めます