Spec-Zone.ru › Django 1.10

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

RangeWidget включает кортеж из 2-х base_widget.

decompress(value)

Принимает единственное «сжатое» значение поля, например, DateRangeField, и возвращает кортеж, представляющий нижнюю и верхнюю границы.

© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/1.10/ref/contrib/postgres/forms/

Spec-Zone.ru

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