Spec-Zone.ru › Django 3.0

Поля и виджеты, специфичные для 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 в большинстве случаев не особенно удобны для пользователя, но это полезный способ форматирования данных с клиентского виджета для отправки на сервер.

Поля диапазонов

Эта группа полей имеет схожие функциональные возможности для приема данных диапазонов. Они основаны на MultiValueField. Они обрабатывают одно пропущенное значение как неограниченный диапазон. Они также проверяют, что нижняя граница не больше верхней границы. Все эти поля используют RangeWidget.

IntegerRangeField

class IntegerRangeField

Основано на IntegerField и преобразует его ввод в NumericRange. По умолчанию для IntegerRangeField и BigIntegerRangeField.

DecimalRangeField

class DecimalRangeField
Добавлено в Django 2.2.

Основано на DecimalField и преобразует его ввод в NumericRange. По умолчанию для DecimalRangeField.

FloatRangeField

class FloatRangeField

Основано на FloatField и преобразует его ввод в NumericRange. По умолчанию для FloatRangeField.

Устарело начиная с версии 2.2: Используйте DecimalRangeField вместо этого.

DateTimeRangeField

class DateTimeRangeField

Основано на DateTimeField и преобразует его ввод в DateTimeTZRange. По умолчанию для DateTimeRangeField.

DateRangeField

class DateRangeField

Основано на DateField и преобразует его ввод в DateRange. По умолчанию для DateRangeField.

Виджеты

RangeWidget

class RangeWidget(base_widget, attrs=None)

Виджет, используемый всеми полями диапазона. Основан на MultiWidget.

RangeWidget имеет один обязательный аргумент:

base_widget

A RangeWidget состоит из 2-кортежа base_widget.

decompress(value)

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

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

Spec-Zone.ru

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