PostgreSQL固有のフォームフィールドとウィジェット—Djangoドキュメント
PostgreSQL固有のフォームフィールドとウィジェット
これらのフィールドとウィジェットはすべて、django.contrib.postgres.forms
モジュールから利用できます。
田畑
SimpleArrayField
- class SimpleArrayField(base_field, delimiter=',', max_length=None, min_length=None)
配列にマップするフィールド。 HTML
<input>
で表されます。- base_field
これは必須の引数です。
配列の基になるフォームフィールドを指定します。 これは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
- delimiter
これはオプションの引数で、デフォルトはコンマです:
,
。 この値は、送信されたデータを分割するために使用されます。 多次元データの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]]}
ノート
このフィールドは区切り文字のエスケープをサポートしていないため、区切り文字が基になるフィールドで有効な文字である場合は注意してください。 区切り文字は1文字だけである必要はありません。
- max_length
これは、配列が指定された長さを超えていないことを検証するオプションの引数です。
- min_length
これは、配列が少なくとも指定された長さに達していることを検証するオプションの引数です。
ユーザーフレンドリーなフォーム
SimpleArrayField
は、ほとんどの場合、特にユーザーフレンドリーではありませんが、サーバーに送信するためにクライアント側ウィジェットからデータをフォーマットするための便利な方法です。
SplitArrayField
- class SplitArrayField(base_field, size, remove_trailing_nulls=False)
このフィールドは、基になるフィールドを一定の回数再生することによって配列を処理します。
- base_field
これは必須の引数です。 繰り返すフォームフィールドを指定します。
- size
これは、基になるフィールドが使用される固定回数です。
- remove_trailing_nulls
デフォルトでは、これは
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]
HStoreField
- class HStoreField
HStoreField のJSONエンコードされたデータを受け入れるフィールド。 すべての値(nullを除く)を文字列にキャストします。 HTML
<textarea>
で表されます。ユーザーフレンドリーなフォーム
HStoreField
は、ほとんどの場合、特にユーザーフレンドリーではありませんが、サーバーに送信するためにクライアント側ウィジェットからデータをフォーマットするための便利な方法です。ノート
特定のフィールドに有効なキーを要求または制限すると便利な場合があります。 これは、 KeysValidator を使用して実行できます。
JSONField
- class JSONField
JSONField のJSONエンコードされたデータを受け入れるフィールド。 HTML
<textarea>
で表されます。ユーザーフレンドリーなフォーム
JSONField
は、ほとんどの場合、特にユーザーフレンドリーではありませんが、サーバーに送信するためにクライアント側ウィジェットからデータをフォーマットするための便利な方法です。
範囲フィールド
このフィールドのグループはすべて、範囲データを受け入れるための同様の機能を共有しています。 それらは MultiValueField に基づいています。 省略された1つの値を無制限の範囲として扱います。 また、下限が上限を超えていないことも検証します。 これらのフィールドはすべて RangeWidget を使用します。
IntegerRangeField
- class IntegerRangeField
- IntegerField に基づき、その入力を
NumericRange
に変換します。 IntegerRangeField および BigIntegerRangeField のデフォルト。
DecimalRangeField
- class DecimalRangeField
バージョン2.2の新機能。
DecimalField に基づき、その入力を
NumericRange
に変換します。 DecimalRangeField のデフォルト。
FloatRangeField
- class FloatRangeField
FloatField に基づき、その入力を
NumericRange
に変換します。 FloatRangeField のデフォルト。バージョン2.2以降非推奨:代わりに DecimalRangeField を使用してください。
DateTimeRangeField
- class DateTimeRangeField
- DateTimeField に基づき、その入力を
DateTimeTZRange
に変換します。 DateTimeRangeField のデフォルト。
ウィジェット
RangeWidget
- class RangeWidget(base_widget, attrs=None)
すべての範囲フィールドで使用されるウィジェット。 MultiWidget に基づいています。
RangeWidget には、必須の引数が1つあります。
- base_widget
RangeWidget は、
base_widget
の2タプルで構成されます。
- decompress(value)
DateRangeField など、フィールドの単一の「圧縮された」値を取得し、下限と上限を表すタプルを返します。