Поля и виджеты, специфичные для 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 -
A
RangeWidgetсостоит из 2-кортежаbase_widget.
-
decompress(value) -
Принимает единственное «сжатое» значение поля, например,
DateRangeField, и возвращает кортеж, представляющий нижнюю и верхнюю границы.
-
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/1.9/ref/contrib/postgres/forms/