Поля и виджеты, специфичные для 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, то значения null разрешены только в конце и будут удалены.Примеры:
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.Изменено в Django 1.11:Добавлена возможность хранить null-значения.
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.11/ref/contrib/postgres/forms/