Todos estos campos y controles están disponibles desde el módulo django.contrib.postgres.forms.
Un campo que se mapea a un arreglo. Está representado por un <input> de HTML.
Este es un argumento obligatorio.
Especifica el campo de formulario subyacente para la matriz. Esto no se utiliza para renderizar ningún HTML, pero se utiliza para procesar los datos enviados y validarlos. Por ejemplo:
>>> 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
Este es un argumento opcional que por defecto se establece en una coma: ,. Este valor se utiliza para dividir los datos suministrados. Permite a ti encadenar SimpleArrayField para datos multidimensionales:
>>> 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]]}
Nota
El campo no admite escape de la delimitadora, así que ten cuidado en los casos donde la delimitadora es un carácter válido en el campo subyacente. La delimitadora no necesita ser solo un carácter.
Este es un argumento opcional que valida que el arreglo no excede la longitud indicada.
Este es un argumento opcional que valida que el arreglo alcance al menos la longitud indicada.
Formularios amigables con el usuario
Campo de Array Simple no es particularmente amigable para el usuario en la mayoría de los casos, sin embargo es una forma útil de formatear datos desde un widget del lado del cliente para su envío al servidor.
Campo de Array Split¶Este campo maneja arrays reproduciendo el campo subyacente un número fijo de veces.
Esta es una argumento requerido. Especifica el campo de formulario que se repetirá.
Esto es el número fijo de veces que el campo subyacente se utilizará.
Por defecto, esto está configurado en False. Cuando False, cada valor de los campos repetidos se almacena. Al establecerlo a True, cualquier valor final vacío se eliminará del resultado. Si el campo subyacente tiene required=True, pero remove_trailing_nulls es True, entonces solo se permiten valores nulos en el final, y se eliminarán.
Algunos ejemplos:
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¶Un campo que acepta datos codificados en JSON para un HStoreField. Convierte todos los valores (excepto nulos) a cadenas. Está representado por un <textarea> HTML.
Formularios amigables con el usuario
Campo de HStore no es particularmente amigable para el usuario en la mayoría de los casos, sin embargo es una forma útil de formatear datos desde un widget del lado del cliente para su envío al servidor.
Nota
En ocasiones puede ser útil requerir o restringir las claves válidas para un campo determinado. Esto se puede hacer utilizando la KeysValidator.
Este grupo de campos comparten funcionalidad similar para aceptar datos de rango. Están basados en MultiValueField. Tratan uno de los valores omitidos como un rango sin límite. También validan que el límite inferior no sea mayor que el límite superior. Todos estos campos utilizan RangeWidget.
IntegerRangeField¶Basado en IntegerField y traduce su entrada a django.db.backends.postgresql.psycopg_any.NumericRange. Por defecto para IntegerRangeField y BigIntegerRangeField.
DecimalRangeField¶Basado en DecimalField y traduce su entrada a django.db.backends.postgresql.psycopg_any.NumericRange. Por defecto para DecimalRangeField.
DateTimeRangeField¶Basado en DateTimeField y traduce su entrada a django.db.backends.postgresql.psycopg_any.DateTimeTZRange. Por defecto para DateTimeRangeField.
Campo de Fecha Rango¶Basado en DateField y traduce su entrada a django.db.backends.postgresql.psycopg_any.DateRange. Por defecto para DateRangeField.
Widget utilizado por todos los campos de rango. Basado en MultiWidget.
RangoWidget tiene un argumento requerido:
Un RangeWidget comprende una tupla de 2 elementos del base_widget.
Toma un valor «comprimido» de un campo, por ejemplo un DateRangeField, y devuelve una tupla que representa los límites inferior y superior.
may 31, 2026