所有这些字段和小部件都可从django.contrib.postgres.forms
模块中获取。
SimpleArrayField
¶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
¶SplitArrayField
(base_field,size,remove_trailing_nulls = False)[source] ¶ T6>此字段通过将底层字段重现固定次数来处理数组。
base_field
¶这是必需的参数。 它指定要重复的表单字段。
size
¶这是基础字段将被使用的固定次数。
remove_trailing_nulls
¶默认情况下,设置为False
。 当False
时,存储重复字段中的每个值。 当设置为True
时,将从结果中去除任何空白的尾随值。 如果底层字段True
,但remove_trailing_nulls
为required=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
¶HStoreField
[source]¶接受HStoreField
的JSON编码数据的字段。 它将所有值(除了空值)转换为字符串。 它由HTML <textarea>
表示。
用户友好的形式
HStoreField
在大多数情况下不是特别用户友好的,但它是一种有用的方式来格式化来自客户端小部件的数据以提交到服务器。
注
在某些情况下,可能需要或限制对给定字段有效的键。 这可以使用KeysValidator
来完成。
增加了存储空值的功能。
JSONField
¶这组字段都具有类似的接受范围数据的功能。
它们基于MultiValueField
。 它们将一个省略的值视为无界范围。 它们还验证下限不大于上限。 所有这些字段都使用RangeWidget
。
IntegerRangeField
¶IntegerRangeField
[source]¶基于IntegerField
并将其输入转换为NumericRange
。 IntegerRangeField
和BigIntegerRangeField
的默认值。
FloatRangeField
¶FloatRangeField
[source]¶基于FloatField
并将其输入转换为NumericRange
。 FloatRangeField
的默认值。
DateTimeRangeField
¶DateTimeRangeField
[source]¶基于DateTimeField
并将其输入转换为DateTimeTZRange
。 DateTimeRangeField
的默认值。
RangeWidget
¶RangeWidget
(base_widget,attrs = None)¶所有范围字段使用的小部件。
基于MultiWidget
。
RangeWidget
有一个必需参数:
base_widget
¶RangeWidget
包括base_widget
的2元组。
decompress
(value)¶获取字段的单个“压缩”值,例如DateRangeField
,并返回表示元组和下限和上限的元组。
2017年9月6日