PostgreSQL 固有のフォームフィールドとウィジェットLink to this heading
これらのフィールドやウィジェットはすべて django.contrib.postgres.forms モジュールから利用できます。
フィールドLink to this heading
SimpleArrayFieldLink to this heading
- class SimpleArrayField(base_field, delimiter=',', max_length=None, min_length=None)Link to this definition
配列にマップされるフィールド。HTMLの
<input>で表されます。- base_fieldLink to this definition
これは必須の引数です。
配列のもととなるフォームフィールドを指定します。これは HTML のレンダリングには使われませんが、送信されたデータを処理し、それを検証するために使われます。たとえば:
>>> from django import forms >>> from django.contrib.postgres.forms import SimpleArrayField >>> class NumberListForm(forms.Form): ... numbers = SimpleArrayField(forms.IntegerField()) ... >>> form = NumberListForm({"numbers": "1,2,3"}) >>> form.is_valid() True >>> form.cleaned_data {'numbers': [1, 2, 3]} >>> form = NumberListForm({"numbers": "1,2,a"}) >>> form.is_valid() False
- delimiterLink to this definition
これはオプションの引数で、デフォルトはコンマ
,です。この値は送信されたデータを分割するために使用されます。多次元データに対してSimpleArrayFieldを連結できます:>>> from django import forms >>> from django.contrib.postgres.forms import SimpleArrayField >>> class GridForm(forms.Form): ... places = SimpleArrayField(SimpleArrayField(IntegerField()), delimiter="|") ... >>> form = GridForm({"places": "1,2|2,1|4,3"}) >>> form.is_valid() True >>> form.cleaned_data {'places': [[1, 2], [2, 1], [4, 3]]}
- max_lengthLink to this definition
これはオプションの引数で、配列が指定された長さを超えていないことを検証します。
- min_lengthLink to this definition
これはオプションの引数で、配列が少なくとも指定された長さに達していることを検証します。
SplitArrayFieldLink to this heading
- class SplitArrayField(base_field, size, remove_trailing_nulls=False)Link to this definition
このフィールドは、ベースとなるフィールドを固定回数複製することで配列を処理します。
- base_fieldLink to this definition
これは必須の引数です。繰り返すフォームフィールドを指定します。
- sizeLink to this definition
これは、ベースとなるフィールドが使用される固定の回数です。
- remove_trailing_nullsLink to this definition
デフォルトでは
Falseに設定されています。Falseに設定すると、繰り返されたフィールドのそれぞれの値が保存されます。Trueに設定すると、末尾の値が空白の場合、その値は結果から取り除かれます。基となるフィールドがrequired=Trueで、かつremove_trailing_nullsがTrueの場合、末尾にのみ null 値が許され、その値は取り除かれます。例:
SplitArrayField(IntegerField(required=True), size=3, remove_trailing_nulls=False) ["1", "2", "3"] # -> [1, 2, 3] ["1", "2", ""] # -> ValidationError - third entry required. ["1", "", "3"] # -> ValidationError - second entry required. ["", "2", ""] # -> ValidationError - first and third entries required. SplitArrayField(IntegerField(required=False), size=3, remove_trailing_nulls=False) ["1", "2", "3"] # -> [1, 2, 3] ["1", "2", ""] # -> [1, 2, None] ["1", "", "3"] # -> [1, None, 3] ["", "2", ""] # -> [None, 2, None] SplitArrayField(IntegerField(required=True), size=3, remove_trailing_nulls=True) ["1", "2", "3"] # -> [1, 2, 3] ["1", "2", ""] # -> [1, 2] ["1", "", "3"] # -> ValidationError - second entry required. ["", "2", ""] # -> ValidationError - first entry required. SplitArrayField(IntegerField(required=False), size=3, remove_trailing_nulls=True) ["1", "2", "3"] # -> [1, 2, 3] ["1", "2", ""] # -> [1, 2] ["1", "", "3"] # -> [1, None, 3] ["", "2", ""] # -> [None, 2]
HStoreFieldLink to this heading
- class HStoreFieldLink to this definition
HStoreField向けにJSONエンコードされたデータを受け付けるフィールドです。全ての値 (nullを除く) を文字列にキャストします。HTMLの<textarea>で表現されます。
範囲フィールドLink to this heading
このグループのフィールドは、範囲データを受け取るための同様の機能を共有しています。これらは MultiValueField に基づいています。これらのフィールドは、1つの省略された値を境界のない範囲として扱います。また、下限値が上限値より大きくないことを検証します。これらのフィールドは全て RangeWidget を使用しています。
IntegerRangeFieldLink to this heading
- class IntegerRangeFieldLink to this definition
IntegerFieldに基づいて、入力をdjango.db.backends.postgresql.psycopg_any.NumericRangeに変換します。IntegerRangeFieldとBigIntegerRangeFieldのデフォルトです。
DecimalRangeFieldLink to this heading
- class DecimalRangeFieldLink to this definition
DecimalFieldに基づいて、その入力をdjango.db.backends.postgresql.psycopg_any.NumericRangeに変換します。DecimalRangeFieldのデフォルトです。
DateTimeRangeFieldLink to this heading
- class DateTimeRangeFieldLink to this definition
DateTimeFieldクラスに基づいて、その入力をdjango.db.backends.postgresql.psycopg_any.DateTimeTZRangeに変換します。これはDateTimeRangeFieldのデフォルトです。
DateRangeFieldLink to this heading
- class DateRangeFieldLink to this definition
DateFieldに基づいて、その入力をdjango.db.backends.postgresql.psycopg_any.DateRangeに変換します。 これはDateRangeFieldのデフォルトです。
ウィジェットLink to this heading
RangeWidgetLink to this heading
- class RangeWidget(base_widget, attrs=None)Link to this definition
すべての範囲フィールドで使用されるウィジェット。
MultiWidgetを基にしています。RangeWidgetは1つの必須引数を持ちます:- base_widgetLink to this definition
RangeWidgetは、base_widgetの 2値タプルを構成します。
- decompress(value)Link to this definition
例えば
DateRangeFieldのようなフィールドの "圧縮された" 値を一つ受け取り、下界と上界を表すタプルを返します。