Поля и компоненты форм 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]]}
Заметка
Поле не позволяет экранировать символ-разделитель, поэтому будьте осторожны в случаях, когда разделитель является допустимым символом базового поля. Разделитель не обязательно должен быть ограничен одним символом.
-
max_length
¶ Это необязательный параметр, который подтверждает, что массив не превышает заданную длину.
-
min_length
¶ Это необязательный параметр, подтверждающий, что массив достигает по крайней мере указанной длины.
Удобные формы
SimpleArrayField
в большинстве случаев не очень удобен для пользователя, но это полезный способ форматировать данные из клиентского компонента и отправлять их на сервер.-
SplitArrayField
¶
-
class
SplitArrayField
( base_field , size , remove_trailing_nulls = False ) ¶ Это поле загружает таблицы, воспроизводя базовое поле определенное количество раз.
-
base_field
¶ Это обязательный параметр. Он определяет повторяющееся поле формы.
-
size
¶ Сколько раз будет использоваться базовое поле.
-
remove_trailing_nulls
¶ По умолчанию это значение
False
. В этом случае сохраняется каждое значение повторяющихся полей. Когда значение равноTrue
, любое значение в конце массива, которое остается пустым, удаляется из результата. Если основное поле имеет ,required=True
но этоremove_trailing_nulls
стоитTrue
, значения нулевых допускается только в конце , и они будут игнорироваться.Некоторые примеры :
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
¶
-
класс
HStoreField
¶ Поле, которое принимает данные в кодировке JSON для поля
HStoreField
. Он переводит все значения (кроме null) в строки. В HTML он представлен тегом<textarea>
.Удобные формы
HStoreField
в большинстве случаев не очень удобен для пользователя, однако это полезный способ форматирования данных из клиентского компонента для отправки на сервер.Заметка
Иногда полезно иметь возможность ограничить, какие ключи принимаются как действительные для данного поля. Это можно сделать с помощью
KeysValidator
.
JSONField
¶
-
класс
JSONField
¶ Поле, которое принимает данные в кодировке JSON для файла
JSONField
. Он представлен в виде HTML<textarea>
.Удобные формы
JSONField
в большинстве случаев не очень удобен для пользователя, однако это полезный способ форматирования данных из клиентского компонента для отправки на сервер.Не рекомендуется с версии 3.1:
django.forms.JSONField
Вместо этого используйте .
Поля интервалов ¶
Эта группа полей имеет идентичную функциональность для приема данных интервала. Они основаны на MultiValueField
. Они рассматривают пропущенное значение как неограниченный диапазон. Они также подтверждают, что нижний предел не превышает верхний предел. Все эти поля используют компонент RangeWidget
.
IntegerRangeField
¶
-
класс
IntegerRangeField
¶ На основе
IntegerField
и переводит введенное значение в интервалNumericRange
. Поле формы по умолчанию дляIntegerRangeField
иBigIntegerRangeField
.
DecimalRangeField
¶
-
класс
DecimalRangeField
¶ На основе
DecimalField
и переводит введенное значение в интервалNumericRange
. Поле формы по умолчанию дляDecimalRangeField
.
DateTimeRangeField
¶
-
класс
DateTimeRangeField
¶ На основе
DateTimeField
и переводит введенное значение в интервалDateTimeTZRange
. Поле формы по умолчанию дляDateTimeRangeField
.
DateRangeField
¶
-
класс
DateRangeField
¶ На основе
DateField
и переводит введенное значение в интервалDateRange
. Поле формы по умолчанию дляDateRangeField
.
Компоненты формы («виджеты») ¶
RangeWidget
¶
-
class
RangeWidget
( base_widget , attrs = None ) ¶ Компонент, используемый всеми полями интервала. На основе
MultiWidget
.RangeWidget
требуется обязательный параметр:-
base_widget
¶ Интервал,
RangeWidget
состоящий из двоичного кортежаbase_widget
.
-
decompress
( значение ) ¶ Принимает одно «сжатое» значение поля, например интервал
DateRangeField
, и возвращает кортеж, представляющий нижнюю и верхнюю границы.
-