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