Поля и виджеты, специфичные для PostgreSQL
Все эти поля и виджеты доступны из модуля django.contrib.postgres.forms.
Поля
SimpleArrayField
-
class SimpleArrayField(base_field, delimiter=', ', max_length=None, min_length=None)[source] -
Простое поле, которое сопоставляется с массивом. Оно представлено в HTML
<input>.-
base_field -
Это обязательный аргумент.
Он указывает базовое поле формы для массива. Оно не используется для рендеринга HTML, но используется для обработки данных, отправленных с формы, и проверки данных. Например:
>>> from django.contrib.postgres.forms import SimpleArrayField >>> from django import forms >>> 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.contrib.postgres.forms import SimpleArrayField >>> from django import forms >>> 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)[source] -
Это поле обрабатывает массивы, повторяя базовое поле заданное количество раз.
-
base_field -
Это обязательный аргумент. Он указывает поле формы, которое будет повторяться.
-
size -
Это фиксированное количество раз, которое будет использоваться базовое поле.
-
remove_trailing_nulls -
По умолчанию это установлено в
False. Когда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
-
class HStoreField[source] -
Поле, принимающее данные, закодированные в формате JSON, для
HStoreField. Все значения будут преобразованы в строки. Оно представлено в HTML<textarea>.Формы, удобные для пользователя
HStoreFieldв большинстве случаев не особенно удобны для пользователя, однако это полезный способ форматирования данных с клиентского виджета для отправки на сервер.Примечание
В некоторых случаях может быть полезно потребовать или ограничить допустимые ключи для данного поля. Это можно сделать, используя
KeysValidator.
JSONField
-
class JSONField[source] -
Поле, принимающее данные, закодированные в формате JSON, для
JSONField. Оно представлено в HTML<textarea>.Формы, удобные для пользователя
JSONFieldв большинстве случаев не особенно удобны для пользователя, однако это полезный способ форматирования данных с клиентского виджета для отправки на сервер.
Поля диапазонов
Группа полей, которые имеют схожую функциональность для приема данных диапазона. Они основаны на MultiValueField. Они рассматривают одно пропущенное значение как неограниченный диапазон. Они также проверяют, что нижняя граница не больше верхней границы. Все эти поля используют RangeWidget.
IntegerRangeField
-
class IntegerRangeField[source] -
Основано на
IntegerFieldи преобразует его вход вNumericRange. Значение по умолчанию дляIntegerRangeFieldиBigIntegerRangeField.
FloatRangeField
-
class FloatRangeField[source] -
Основано на
FloatFieldи преобразует его вход вNumericRange. По умолчанию дляFloatRangeField.
DateTimeRangeField
-
class DateTimeRangeField[source] -
Основано на
DateTimeFieldи преобразует его вход вDateTimeTZRange. Значение по умолчанию дляDateTimeRangeField.
DateRangeField
-
class DateRangeField[source] -
Основано на
DateFieldи преобразует его вход вDateRange. По умолчанию дляDateRangeField.
Виджеты
RangeWidget
-
class RangeWidget(base_widget, attrs=None) -
Виджет, используемый для всех полей диапазона. Основан на
MultiWidget.RangeWidgetимеет один обязательный аргумент:-
base_widget -
RangeWidgetвключает кортеж из 2-хbase_widget.
-
decompress(value) -
Принимает единственное «сжатое» значение поля, например,
DateRangeField, и возвращает кортеж, представляющий нижнюю и верхнюю границы.
-
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/1.10/ref/contrib/postgres/forms/