Поля и виджеты, специфичные для 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. Когда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 -
Поле, принимающее данные, закодированные в формате JSON, для поля
HStoreField. Оно преобразует все значения (кроме null) в строки. Оно представлено HTML-элементом<textarea>.Поля удобные для пользователя
HStoreFieldв большинстве случаев не является удобным для пользователя, однако это полезный способ форматирования данных с клиентского виджета для отправки на сервер.Примечание
В некоторых случаях может быть полезно указать или ограничить допустимые ключи для данного поля. Это можно сделать с помощью
KeysValidator.
JSONField
-
class JSONField -
Поле, принимающее данные, закодированные в формате JSON, для поля
JSONField. Оно представлено HTML-элементом<textarea>.Поля удобные для пользователя
JSONFieldв большинстве случаев не является удобным для пользователя, однако это полезный способ форматирования данных с клиентского виджета для отправки на сервер.Устарело начиная с версии 3.1: Используйте
django.forms.JSONFieldвместо этого.
Диапазон полей
Эта группа полей обладает похожей функциональностью для приема данных диапазона. Они основаны на MultiValueField. Они рассматривают одно пропущенное значение как неограниченный диапазон. Они также проверяют, что нижняя граница не больше верхней границы. Все эти поля используют RangeWidget.
IntegerRangeField
-
class IntegerRangeField -
Основано на
IntegerFieldи преобразует ввод вNumericRange. По умолчанию дляIntegerRangeFieldиBigIntegerRangeField.
DecimalRangeField
-
class DecimalRangeField -
Основано на
DecimalFieldи преобразует ввод вNumericRange. По умолчанию дляDecimalRangeField.
DateTimeRangeField
-
class DateTimeRangeField -
Основано на
DateTimeFieldи преобразует ввод вDateTimeTZRange. По умолчанию дляDateTimeRangeField.
DateRangeField
-
class DateRangeField -
Основано на
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/3.1/ref/contrib/postgres/forms/