PostgreSQL-specifika formulärfält och widgetsLink to this heading

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

FältLink to this heading

SimpleArrayFieldLink to this heading

class SimpleArrayField(base_field, delimiter=',', max_length=None, min_length=None)Link to this definition

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

base_fieldLink to this definition

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:

Python console
>>> 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
delimiterLink to this definition

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:

Python console
>>> 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_lengthLink to this definition

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

min_lengthLink to this definition

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

SplitArrayFieldLink to this heading

class SplitArrayField(base_field, size, remove_trailing_nulls=False)Link to this definition

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

base_fieldLink to this definition

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

sizeLink to this definition

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

remove_trailing_nullsLink to this definition

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:

Code
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]

HStoreFieldLink to this heading

class HStoreFieldLink to this definition

Ett fält som accepterar JSON-kodade data för en HStoreField. Det kastar alla värden (utom nulls) till strängar. Det representeras av en HTML <textarea>.

Område FältLink to this heading

Denna grupp av fält delar alla liknande funktionalitet för att acceptera intervalldata. De är baserade på 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.

IntegerRangeFieldLink to this heading

class IntegerRangeFieldLink to this definition

Baserat på IntegerField och översätter dess indata till django.db.backends.postgresql.psycopg_any.NumericRange. Standard för IntegerRangeField och BigIntegerRangeField.

DecimalRangeFieldLink to this heading

class DecimalRangeFieldLink to this definition

Baserad på DecimalField och översätter dess indata till django.db.backends.postgresql.psycopg_any.NumericRange. Standard för DecimalRangeField.

DatumTimeRangeFieldLink to this heading

class DateTimeRangeFieldLink to this definition

Baserad på DateTimeField och översätter dess indata till django.db.backends.postgresql.psycopg_any.DateTimeTZRange. Standard för DateTimeRangeField.

DatumintervallfältLink to this heading

class DateRangeFieldLink to this definition

Baserat på DateField och översätter dess indata till django.db.backends.postgresql.psycopg_any.DateRange. Standard för DateRangeField.

WidgetsLink to this heading

RangeWidgetLink to this heading

class RangeWidget(base_widget, attrs=None)Link to this definition

Widget som används av alla fält i intervallet. Baserat på MultiWidget.

RangeWidget har ett obligatoriskt argument:

base_widgetLink to this definition

En RangeWidget består av en 2-tupel av base_widget.

decompress(value)Link to this definition

Tar ett enda ”komprimerat” värde för ett fält, t.ex. ett DateRangeField, och returnerar en tupel som representerar en nedre och övre gräns.