Spec-Zone.ru › Django 2.2

Поля и виджеты форм, специфичные для 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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API