---
title: "PostgreSQL-specifika formulärfält och widgets"
version: 6.0
locale: sv
source: https://docs.djangoproject.com/sv/6.0/ref/contrib/postgres/forms/
canonical: https://djangodocs.dev/sv/6.0/ref/contrib/postgres/forms/
---
# PostgreSQL-specifika formulärfält och widgets

Alla dessa fält och widgets är tillgängliga från modulen `django.contrib.postgres.forms`.

## Fält

### `SimpleArrayField`

#### `class SimpleArrayField(base_field, delimiter=',', max_length=None, min_length=None)`

Ett fält som mappar till en array. Det representeras av en HTML `<input>`.

#### `base_field`

Detta är ett nödvändigt argument.

Det anger det underliggande formulärfältet för arrayen. Detta används inte för att rendera någon HTML, men det används för att bearbeta de inskickade uppgifterna och validera dem. Ett exempel:

```pycon
>>> 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`

Detta är ett valfritt argument som i standardfallet är ett kommatecken: `,`. Detta värde används för att dela upp de data som skickas in. Det gör att du kan kedja `SimpleArrayField` för flerdimensionella data:

```pycon
>>> 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]]}
```

> **Note**
>
> Fältet stöder inte escaping av avgränsaren, så var försiktig i de fall avgränsaren är ett giltigt tecken i det underliggande fältet. Avgränsaren behöver inte bestå av endast ett tecken.

#### `max_length`

Detta är ett valfritt argument som validerar att matrisen inte överstiger den angivna längden.

#### `min_length`

Detta är ett valfritt argument som validerar att matrisen når minst den angivna längden.

> **Användarvänliga formulär**
>
> `SimpleArrayField` är inte särskilt användarvänligt i de flesta fall, men det är ett användbart sätt att formatera data från en widget på klientsidan för inlämning till servern.

### `SplitArrayField`

#### `class SplitArrayField(base_field, size, remove_trailing_nulls=False)`

Detta fält hanterar matriser genom att reproducera det underliggande fältet ett fast antal gånger.

#### `base_field`

Detta är ett obligatoriskt argument. Det anger det formulärfält som ska upprepas.

#### `size`

Detta är det fasta antal gånger som det underliggande fältet kommer att användas.

#### `remove_trailing_nulls`

Som standard är detta inställt på `False`. När `False`, lagras varje värde från de upprepade fälten. När den är inställd på `True` kommer alla efterföljande värden som är tomma att tas bort från resultatet. Om det underliggande fältet har `required=True`, men `remove_trailing_nulls` är `True`, är null-värden endast tillåtna i slutet och kommer att tas bort.

Några exempel:

```
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`

Ett fält som accepterar JSON-kodade data för en [`HStoreField`](/sv/6.0/ref/contrib/postgres/fields/#django.contrib.postgres.fields.HStoreField). Det kastar alla värden (utom nulls) till strängar. Det representeras av en HTML `<textarea>`.

> **Användarvänliga formulär**
>
> `HStoreField` är inte särskilt användarvänligt i de flesta fall, men det är ett användbart sätt att formatera data från en widget på klientsidan för inlämning till servern.

> **Note**
>
> Ibland kan det vara användbart att kräva eller begränsa de nycklar som är giltiga för ett visst fält. Detta kan göras med hjälp av [`KeysValidator`](/sv/6.0/ref/contrib/postgres/validators/#django.contrib.postgres.validators.KeysValidator).

### Område Fält

Denna grupp av fält delar alla liknande funktionalitet för att acceptera intervalldata. De är baserade på [`MultiValueField`](/sv/6.0/ref/forms/fields/#django.forms.MultiValueField). De behandlar ett utelämnat värde som ett obegränsat intervall. De validerar också att den nedre gränsen inte är större än den övre gränsen. Alla dessa fält använder [`RangeWidget`](#django.contrib.postgres.forms.RangeWidget).

#### `IntegerRangeField`

#### `class IntegerRangeField`

Baserat på [`IntegerField`](/sv/6.0/ref/forms/fields/#django.forms.IntegerField) och översätter dess indata till `django.db.backends.postgresql.psycopg_any.NumericRange`. Standard för [`IntegerRangeField`](/sv/6.0/ref/contrib/postgres/fields/#django.contrib.postgres.fields.IntegerRangeField) och [`BigIntegerRangeField`](/sv/6.0/ref/contrib/postgres/fields/#django.contrib.postgres.fields.BigIntegerRangeField).

#### `DecimalRangeField`

#### `class DecimalRangeField`

Baserad på [`DecimalField`](/sv/6.0/ref/forms/fields/#django.forms.DecimalField) och översätter dess indata till `django.db.backends.postgresql.psycopg_any.NumericRange`. Standard för [`DecimalRangeField`](/sv/6.0/ref/contrib/postgres/fields/#django.contrib.postgres.fields.DecimalRangeField).

#### `DatumTimeRangeField`

#### `class DateTimeRangeField`

Baserad på [`DateTimeField`](/sv/6.0/ref/forms/fields/#django.forms.DateTimeField) och översätter dess indata till `django.db.backends.postgresql.psycopg_any.DateTimeTZRange`. Standard för [`DateTimeRangeField`](/sv/6.0/ref/contrib/postgres/fields/#django.contrib.postgres.fields.DateTimeRangeField).

#### `Datumintervallfält`

#### `class DateRangeField`

Baserat på [`DateField`](/sv/6.0/ref/forms/fields/#django.forms.DateField) och översätter dess indata till `django.db.backends.postgresql.psycopg_any.DateRange`. Standard för [`DateRangeField`](/sv/6.0/ref/contrib/postgres/fields/#django.contrib.postgres.fields.DateRangeField).

## Widgets

### `RangeWidget`

#### `class RangeWidget(base_widget, attrs=None)`

Widget som används av alla fält i intervallet. Baserat på [`MultiWidget`](/sv/6.0/ref/forms/widgets/#django.forms.MultiWidget).

[`RangeWidget`](#django.contrib.postgres.forms.RangeWidget) har ett obligatoriskt argument:

#### `base_widget`

En [`RangeWidget`](#django.contrib.postgres.forms.RangeWidget) består av en 2-tupel av `base_widget`.

#### `decompress(value)`

Tar ett enda ”komprimerat” värde för ett fält, t.ex. ett [`DateRangeField`](/sv/6.0/ref/contrib/postgres/fields/#django.contrib.postgres.fields.DateRangeField), och returnerar en tupel som representerar en nedre och övre gräns.
