Referens till modellfältLink to this heading
Det här dokumentet innehåller alla API-referenser för Field inklusive de field options och field types som Django erbjuder.
Alternativ för fältLink to this heading
Följande argument är tillgängliga för alla fälttyper. Alla är valfria.
nullLink to this heading
- Field.nullLink to this definition
Om True, kommer Django att lagra tomma värden som NULL i databasen. Standard är False.
Undvik att använda null på strängbaserade fält som CharField och TextField. Django-konventionen är att använda en tom sträng, inte NULL, som ”inga data”-tillstånd för strängbaserade fält. Om ett strängbaserat fält har null=False kan tomma strängar fortfarande sparas för ”inga data”. Om ett strängbaserat fält har null=True, betyder det att det har två möjliga värden för ”no data”: NULL och den tomma strängen. I de flesta fall är det överflödigt att ha två möjliga värden för ”no data”. Ett undantag är när en CharField har både unique=True och blank=True inställda. I den här situationen krävs null=True för att undvika brott mot unika begränsningar när flera objekt med tomma värden sparas.
För både strängbaserade och icke-strängbaserade fält måste du också ange blank=True om du vill tillåta tomma värden i formulär, eftersom parametern null endast påverkar databaslagring (se blank).
blankLink to this heading
- Field.blankLink to this definition
Om True, får fältet vara tomt. Standard är False.
Observera att detta skiljer sig från null. null är rent databasrelaterat, medan blank är valideringsrelaterat. Om ett fält har blank=True, tillåter formulärvalidering att ett tomt värde anges. Om ett fält har blank=False kommer fältet att vara obligatoriskt.
valLink to this heading
- Field.choicesLink to this definition
En mappning eller iterabel i det format som beskrivs nedan för att användas som val för detta fält. Om val anges, verkställs de av modellvalidering och standardformulärwidgeten kommer att vara en valbox med dessa val istället för standardtextfältet.
Om en mappning anges är nyckelelementet det faktiska värde som ska anges i modellen och det andra elementet är det lättlästa namnet. Till exempel:
YEAR_IN_SCHOOL_CHOICES = {
"FR": "Freshman",
"SO": "Sophomore",
"JR": "Junior",
"SR": "Senior",
"GR": "Graduate",
}
Du kan också skicka en sequence som i sig består av iterabler med exakt två element (t.ex. [(A1, B1), (A2, B2), ...]). Det första elementet i varje tupel är det faktiska värde som ska anges i modellen, och det andra elementet är det mänskligt läsbara namnet. Till exempel:
YEAR_IN_SCHOOL_CHOICES = [
("FR", "Freshman"),
("SO", "Sophomore"),
("JR", "Junior"),
("SR", "Senior"),
("GR", "Graduate"),
]
choices kan också definieras som en callable som inte förväntar sig några argument och som returnerar något av de format som beskrivs ovan. Till exempel:
def get_currencies():
return {i: i for i in settings.CURRENCIES}
class Expense(models.Model):
amount = models.DecimalField(max_digits=10, decimal_places=2)
currency = models.CharField(max_length=3, choices=get_currencies)
Att skicka en callable för choices kan vara särskilt praktiskt när, till exempel, alternativen är:
resultatet av I/O-bundna operationer (som potentiellt kan cachas), t.ex. att fråga en tabell i samma eller en extern databas, eller att komma åt val från en statisk fil.
en lista som för det mesta är stabil men som kan variera från tid till annan eller från projekt till projekt. Exempel i denna kategori är att använda tredjepartsappar som tillhandahåller en välkänd förteckning över värden, t.ex. valutor, länder, språk, tidszoner etc.
I allmänhet är det bäst att definiera val i en modellklass och att definiera en konstant med lämpligt namn för varje värde:
from django.db import models
class Student(models.Model):
FRESHMAN = "FR"
SOPHOMORE = "SO"
JUNIOR = "JR"
SENIOR = "SR"
GRADUATE = "GR"
YEAR_IN_SCHOOL_CHOICES = {
FRESHMAN: "Freshman",
SOPHOMORE: "Sophomore",
JUNIOR: "Junior",
SENIOR: "Senior",
GRADUATE: "Graduate",
}
year_in_school = models.CharField(
max_length=2,
choices=YEAR_IN_SCHOOL_CHOICES,
default=FRESHMAN,
)
def is_upperclass(self):
return self.year_in_school in {self.JUNIOR, self.SENIOR}
Du kan definiera en lista med val utanför en modellklass och sedan hänvisa till den, men om du definierar valen och namnen för varje val i modellklassen behålls all denna information i den klass som använder den och hjälper till att hänvisa till valen (t.ex. fungerar Student.SOPHOMORE överallt där modellen Student har importerats).
Du kan också samla dina tillgängliga val i namngivna grupper som kan användas för organisatoriska ändamål:
MEDIA_CHOICES = {
"Audio": {
"vinyl": "Vinyl",
"cd": "CD",
},
"Video": {
"vhs": "VHS Tape",
"dvd": "DVD",
},
"unknown": "Unknown",
}
Mappningens nyckel är det namn som ska användas för gruppen och värdet är alternativen i gruppen, som består av fältvärdet och ett lättläst namn för ett alternativ. Grupperade alternativ kan kombineras med ogrupperade alternativ i en enda mappning (som alternativet "unknown" i det här exemplet).
Du kan också använda en sekvens, t.ex. en lista med 2-tupler:
MEDIA_CHOICES = [
(
"Audio",
(
("vinyl", "Vinyl"),
("cd", "CD"),
),
),
(
"Video",
(
("vhs", "VHS Tape"),
("dvd", "DVD"),
),
),
("unknown", "Unknown"),
]
Observera att val kan vara vilket sekvensobjekt som helst - inte nödvändigtvis en lista eller tupel. Detta gör att du kan konstruera val dynamiskt. Men om du hackar choices för att vara dynamisk, är det förmodligen bättre att använda en riktig databastabell med en ForeignKey. choices är avsedd för statiska data som inte ändras mycket, om ens någonsin.
För varje modellfält som har choices inställt, kommer Django att normalisera valen till en lista med 2-tuples och lägga till en metod för att hämta det mänskliga läsbara namnet för fältets aktuella värde. Se get_FOO_display() i API-dokumentationen för databasen.
Unless blank=False is set on the field along with a
default then a label containing "- Select an option -" will
be rendered with the select box. To override this behavior, add a tuple to
choices containing None; e.g. (None, 'Your String For Display').
Alternatively, you can use an empty string instead of None where this
makes sense - such as on a CharField.
UppräkningstyperLink to this heading
Dessutom tillhandahåller Django enumerationstyper som du kan underklassa för att definiera val på ett koncist sätt:
from django.utils.translation import gettext_lazy as _
class Student(models.Model):
class YearInSchool(models.TextChoices):
FRESHMAN = "FR", _("Freshman")
SOPHOMORE = "SO", _("Sophomore")
JUNIOR = "JR", _("Junior")
SENIOR = "SR", _("Senior")
GRADUATE = "GR", _("Graduate")
year_in_school = models.CharField(
max_length=2,
choices=YearInSchool,
default=YearInSchool.FRESHMAN,
)
def is_upperclass(self):
return self.year_in_school in {
self.YearInSchool.JUNIOR,
self.YearInSchool.SENIOR,
}
Dessa fungerar på liknande sätt som enum från Pythons standardbibliotek, men med vissa ändringar:
Enum-medlemsvärden är en tupel av argument som ska användas när den konkreta datatypen konstrueras. Django stöder att lägga till ett extra strängvärde i slutet av denna tuple som ska användas som det mänskliga läsbara namnet, eller
label.labelkan vara en lat översättningsbar sträng. I de flesta fall kommer alltså medlemsvärdet att vara en(värde, etikett)2-tupel. Se nedan för ett exempel på underklassning av val med en mer komplex datatyp. Om en tupel inte tillhandahålls, eller om det sista objektet inte är en (lat) sträng, ärlabelautomatiskt genererad från medlemsnamnet.En
.label-egenskap läggs till på värden för att returnera det mänskligt läsbara namnet.Ett antal anpassade egenskaper läggs till i uppräkningsklasserna -
.choices,.labels,.valuesoch.names- för att göra det lättare att komma åt listor över dessa separata delar av uppräkningen.The use of
enum.unique()is enforced to ensure that values cannot be defined multiple times. This is unlikely to be expected in choices for a field.
Observera att användning av YearInSchool.SENIOR, YearInSchool['SENIOR'] eller YearInSchool('SR') för att komma åt eller slå upp enum-medlemmar fungerar som förväntat, liksom egenskaperna .name och .value på medlemmarna.
Om du inte behöver översätta de lättlästa namnen kan du låta dem härledas från medlemsnamnet (genom att ersätta understreck med mellanslag och använda titelfas):
>>> class Vehicle(models.TextChoices):
... CAR = "C"
... TRUCK = "T"
... JET_SKI = "J"
...
>>> Vehicle.JET_SKI.label
'Jet Ski'
Eftersom fallet där enumvärdena måste vara heltal är extremt vanligt, tillhandahåller Django en IntegerChoices-klass. Till exempel:
class Card(models.Model):
class Suit(models.IntegerChoices):
DIAMOND = 1
SPADE = 2
HEART = 3
CLUB = 4
suit = models.IntegerField(choices=Suit)
Det är också möjligt att använda Enum Functional API med förbehållet att etiketter genereras automatiskt enligt ovan:
>>> MedalType = models.TextChoices("MedalType", "GOLD SILVER BRONZE")
>>> MedalType.choices
[('GOLD', 'Gold'), ('SILVER', 'Silver'), ('BRONZE', 'Bronze')]
>>> Place = models.IntegerChoices("Place", "FIRST SECOND THIRD")
>>> Place.choices
[(1, 'First'), (2, 'Second'), (3, 'Third')]
Om du behöver stöd för en annan konkret datatyp än int eller str kan du subklassa Choices och den nödvändiga konkreta datatypen, t.ex. date för användning med DateField:
class MoonLandings(datetime.date, models.Choices):
APOLLO_11 = 1969, 7, 20, "Apollo 11 (Eagle)"
APOLLO_12 = 1969, 11, 19, "Apollo 12 (Intrepid)"
APOLLO_14 = 1971, 2, 5, "Apollo 14 (Antares)"
APOLLO_15 = 1971, 7, 30, "Apollo 15 (Falcon)"
APOLLO_16 = 1972, 4, 21, "Apollo 16 (Orion)"
APOLLO_17 = 1972, 12, 11, "Apollo 17 (Challenger)"
Det finns några ytterligare förbehåll att vara medveten om:
Uppräkningstyper stöder inte namngivna grupper.
Eftersom en uppräkning med en konkret datatyp kräver att alla värden matchar typen, kan åsidosättande av blank label inte uppnås genom att skapa en medlem med värdet
None. Istället ställer du in attributet__empty__på klassen:class Answer(models.IntegerChoices): NO = 0, _("No") YES = 1, _("Yes") __empty__ = _("(Unknown)")
db_kolumnLink to this heading
- Field.db_columnLink to this definition
Namnet på den databaskolumn som ska användas för detta fält. Om detta inte anges kommer Django att använda fältets namn.
Om kolumnnamnet i din databas är ett reserverat SQL-ord eller innehåller tecken som inte är tillåtna i Python-variabelnamn - särskilt bindestrecket - är det OK. Django citerar kolumn- och tabellnamn bakom kulisserna.
db_kommentarLink to this heading
- Field.db_commentLink to this definition
Kommentaren till den databaskolumn som ska användas för detta fält. Det är användbart för att dokumentera fält för personer med direkt databasåtkomst som kanske inte tittar på din Django-kod. Till exempel:
pub_date = models.DateTimeField(
db_comment="Date and time when the article was published",
)
db_defaultLink to this heading
- Field.db_defaultLink to this definition
Det databasberäknade standardvärdet för detta fält. Detta kan vara ett bokstavligt värde eller en databasfunktion, t.ex. Now:
created = models.DateTimeField(db_default=Now())
Mer komplexa uttryck kan användas, så länge de är uppbyggda av literaler och databasfunktioner:
month_due = models.DateField(
db_default=TruncMonth(
Now() + timedelta(days=90),
output_field=models.DateField(),
)
)
Databasens standardvärden kan inte referera till andra fält eller modeller. Detta är till exempel ogiltigt:
end = models.IntegerField(db_default=F("start") + 50)
Om både db_default och Field.default` är inställda kommer default att ha företräde när instanser skapas i Python-kod. db_default kommer fortfarande att vara inställt på databasnivå och kommer att användas när rader infogas utanför ORM eller när ett nytt fält läggs till i en migrering.
Om ett fält har ett db_default utan att ett default har angetts och inget värde har tilldelats fältet, returneras ett DatabaseDefault-objekt som fältvärde på osparade modellinstanser. Det faktiska värdet för fältet bestäms av databasen när modellinstansen sparas.
db_indexLink to this heading
- Field.db_indexLink to this definition
Om True, skapas ett databasindex för detta fält.
db_tablespaceLink to this heading
- Field.db_tablespaceLink to this definition
Namnet på database tablespace som ska användas för fältets index, om fältet är indexerat. Standardvärdet är projektets DEFAULT_INDEX_TABLESPACE-inställning, om den är inställd, eller modellens db_tablespace, om det finns någon. Om backend inte stöder tablespaces för index, ignoreras detta alternativ.
standardLink to this heading
- Field.defaultLink to this definition
Standardvärdet för fältet. Detta kan vara ett värde eller ett anropsbart objekt. Om det är anropsbart kommer det att anropas varje gång ett nytt objekt skapas.
Standardvärdet kan inte vara ett föränderligt objekt (modellinstans, list, set, etc.), eftersom en referens till samma instans av det objektet skulle användas som standardvärde i alla nya modellinstanser. Istället kan du paketera det önskade standardvärdet i en callable. Om du till exempel vill ange en standard dict för JSONField, använd en funktion:
def contact_default():
return {"email": "to1@example.com"}
contact_info = JSONField("ContactInfo", default=contact_default)
lambda kan inte användas för fältalternativ som default eftersom de inte kan serialiseras av migreringar. Se den dokumentationen för andra varningar.
För fält som ForeignKey som mappar till modellinstanser bör standardvärdena vara värdet för det fält som de refererar till (pk om inte to_field är inställt) i stället för modellinstanser.
Standardvärdet används när nya modellinstanser skapas och inget värde har angetts för fältet. När fältet är en primärnyckel används standardvärdet även när fältet är inställt på None.
Standardvärdet kan också ställas in på databasnivå med Field.db_default.
”redigerbarLink to this heading
- Field.editableLink to this definition
Om False, kommer fältet inte att visas i admin eller någon annan ModelForm. Det kommer också att hoppas över under modellvalidering. Standard är True.
FelmeddelandenLink to this heading
- Field.error_messagesLink to this definition
Med argumentet error_messages kan du åsidosätta de standardmeddelanden som fältet kommer att ge upphov till. Skicka in en ordbok med nycklar som matchar de felmeddelanden som du vill åsidosätta.
Felmeddelanden inkluderar null, blank, invalid, invalid_choice, unique och unique_for_date. Ytterligare nycklar för felmeddelanden anges för varje fält i avsnittet ”Fälttyper” nedan.
Dessa felmeddelanden sprids ofta inte till formulär. Se betraktelser-om-modell-felmeddelanden.
hjälp_textLink to this heading
- Field.help_textLink to this definition
Extra ”hjälp”-text som ska visas med formulärwidgeten. Det är användbart för dokumentation även om ditt fält inte används i ett formulär.
Observera att detta värde inte är HTML-escaped i automatiskt genererade formulär. Detta gör att du kan inkludera HTML i help_text om du så önskar. Till exempel:
help_text = "Please use the following format: <em>YYYY-MM-DD</em>."
Alternativt kan du använda vanlig text och django.utils.html.escape() för att undkomma alla HTML-specialtecken. Se till att du undandrar all hjälptext som kan komma från icke betrodda användare för att undvika en cross-site scripting-attack.
primär_nyckelLink to this heading
- Field.primary_keyLink to this definition
Om True, är detta fält primärnyckel för modellen.
Om du inte anger primary_key=True för något fält i din modell och inte har definierat en sammansatt primärnyckel, kommer Django automatiskt att lägga till ett fält för att hålla primärnyckeln. Så du behöver inte ställa in primary_key=True på något av dina fält om du inte vill åsidosätta standardbeteendet för primärnyckeln. Typen av automatiskt skapade primärnyckelfält kan anges per app i AppConfig.default_auto_field eller globalt i inställningen DEFAULT_AUTO_FIELD. För mer information, se Automatiska primärnyckelfält.
primary_key=True innebär null=False och unique=True. Endast ett fält per modell kan ange primary_key=True. Sammansatta primärnycklar måste definieras med hjälp av CompositePrimaryKey i stället för att sätta denna flagga till True för alla fält för att bibehålla denna invariant.
Fältet primary key är skrivskyddat. Om du ändrar värdet på primärnyckeln i ett befintligt objekt och sedan sparar det, skapas ett nytt objekt vid sidan av det gamla.
The primary key field is set to None when calling a model instance’s
delete() method.
uniqueLink to this heading
- Field.uniqueLink to this definition
Om True måste detta fält vara unikt i hela tabellen.
Detta verkställs på databasnivå och genom modellvalidering. Om du försöker spara en modell med ett duplicerat värde i ett unique-fält, kommer ett django.db.IntegrityError att skapas av modellens save()-metod.
Detta alternativ är giltigt för alla fälttyper utom ManyToManyField och OneToOneField.
Observera att när unique är True behöver du inte ange db_index, eftersom unique innebär att ett index skapas.
unique_for_dateLink to this heading
- Field.unique_for_dateLink to this definition
Ange detta till namnet på en DateField eller DateTimeField för att kräva att detta fält är unikt för datumfältets värde.
Om du till exempel har ett fält title som har unique_for_date="pub_date", så skulle Django inte tillåta att två poster med samma title och pub_date registreras.
Observera att om du ställer in detta så att det pekar på en DateTimeField, kommer endast datumdelen av fältet att beaktas. Dessutom, när USE_TZ är True, kommer kontrollen att utföras i current time zone vid den tidpunkt då objektet sparas.
This is enforced by Model.validate_unique() during model validation
but not at the database level. If any unique_for_date constraint
involves fields that are not part of a ModelForm (for
example, if one of the fields is listed in exclude or has
editable=False), Model.validate_unique() will
skip validation for that particular constraint.
unika_för_månadLink to this heading
- Field.unique_for_monthLink to this definition
Som unique_for_date, men kräver att fältet är unikt med avseende på månaden.
unique_for_yearLink to this heading
- Field.unique_for_yearLink to this definition
Som unique_for_date och unique_for_month.
verbose_namnLink to this heading
- Field.verbose_nameLink to this definition
Ett mänskligt läsbart namn för fältet. Om verbose-namnet inte anges kommer Django automatiskt att skapa det med hjälp av fältets attributnamn och konvertera understreck till mellanslag. Se Verbose field names.
validerareLink to this heading
- Field.validatorsLink to this definition
En lista över validerare som ska köras för detta fält. Se validators dokumentation för mer information.
FälttyperLink to this heading
AutoFieldLink to this heading
- class AutoField(**options)Link to this definition
En IntegerField som automatiskt ökar i enlighet med tillgängliga ID:n. Du behöver vanligtvis inte använda detta direkt; ett primärnyckelfält kommer automatiskt att läggas till i din modell om du inte anger något annat. Se Automatiska primärnyckelfält.
BigAutoFieldLink to this heading
- class BigAutoField(**options)Link to this definition
Ett 64-bitars heltal, ungefär som en AutoField förutom att det garanterat passar siffror från 1 till 9223372036854775807.
BigIntegerFieldLink to this heading
- class BigIntegerField(**options)Link to this definition
Ett 64-bitars heltal, ungefär som ett IntegerField förutom att det garanterat passar siffror från -9223372036854775808 till 9223372036854775807. Standardformulärwidgeten för detta fält är en NumberInput.
BinaryFieldLink to this heading
- class BinaryField(max_length=None, **options)Link to this definition
Ett fält för att lagra binära rådata. Det kan tilldelas bytes, bytearray eller memoryview.
Som standard ställer BinaryField in editable till False, i vilket fall den inte kan inkluderas i en ModelForm.
- BinaryField.max_lengthLink to this definition
Valfritt. Den maximala längden (i byte) på fältet. Den maximala längden verkställs i Djangos validering med hjälp av
MaxLengthValidator.
BooleanFieldLink to this heading
- class BooleanField(**options)Link to this definition
Ett sant/falskt fält.
Standardformulärwidgeten för detta fält är CheckboxInput, eller NullBooleanSelect om null=True.
Standardvärdet för BooleanField är None när Field.default inte är definierat.
SammansattPrimärnyckelLink to this heading
- class CompositePrimaryKey(*field_names, **options)Link to this definition
Ett virtuellt fält som används för att definiera en sammansatt primärnyckel.
Detta fält måste definieras som modellens pk-attribut. Om det finns kommer Django att skapa den underliggande modelltabellen med en sammansatt primärnyckel.
Argumentet *field_names är en lista med positionella fältnamn som utgör primärnyckeln.
Se Sammansatta primärnycklar för mer information.
CharFieldLink to this heading
- class CharField(max_length=None, **options)Link to this definition
Ett strängfält, för små till stora strängar.
För stora mängder text, använd TextField.
Standardformulärwidgeten för detta fält är en TextInput.
CharField har följande extra argument:
- CharField.max_lengthLink to this definition
Den maximala längden (i tecken) på fältet.
max_lengthverkställs på databasnivå och i Djangos validering med hjälp avMaxLengthValidator. Det krävs för alla databasbackends som ingår i Django utom PostgreSQL och SQLite, som stöder obegränsadeVARCHAR-kolumner.
- CharField.db_collationLink to this definition
Valfritt. Databasens kollationsnamn för fältet.
DateFieldLink to this heading
- class DateField(auto_now=False, auto_now_add=False, **options)Link to this definition
Ett datum, representerat i Python av en datetime.date-instans. Har några extra, valfria argument:
- DateField.auto_nowLink to this definition
Ställ automatiskt in fältet på now varje gång objektet sparas. Användbart för tidsstämplar för ”senast ändrad”. Observera att det aktuella datumet alltid används; det är inte bara ett standardvärde som du kan åsidosätta.
Fältet uppdateras endast automatiskt när du anropar
Model.save(). Fältet uppdateras inte när du gör uppdateringar av andra fält på andra sätt, t.ex.QuerySet.update(), men du kan ange ett anpassat värde för fältet i en sådan uppdatering.
- DateField.auto_now_addLink to this definition
Ställ automatiskt in fältet på now när objektet skapas för första gången. Användbart för skapande av tidsstämplar. Observera att det aktuella datumet alltid används; det är inte bara ett standardvärde som du kan åsidosätta. Så även om du anger ett värde för det här fältet när du skapar objektet kommer det att ignoreras. Om du vill kunna ändra det här fältet anger du följande i stället för
auto_now_add=True:För
DateField:default=date.today- fråndatetime.date.today()För
DateTimeField:default=timezone.now- fråndjango.utils.timezone.now()
Standardformulärwidgeten för detta fält är en DateInput. Administratören lägger till en JavaScript-kalender och en genväg för ”Today”. Inkluderar ytterligare en nyckel för felmeddelandet invalid_date.
Alternativen auto_now_add, auto_now och default är ömsesidigt uteslutande. Varje kombination av dessa alternativ kommer att resultera i ett fel.
DatumTimeFieldLink to this heading
- class DateTimeField(auto_now=False, auto_now_add=False, **options)Link to this definition
Ett datum och en tid, representerade i Python av en datetime.datetime-instans. Tar samma extra argument som DateField.
Standardformulärwidgeten för detta fält är en enda DateTimeInput. Administratören använder två separata TextInput-widgetar med JavaScript-genvägar.
DecimalFieldLink to this heading
- class DecimalField(max_digits=None, decimal_places=None, **options)Link to this definition
Ett decimaltal med fast precision, representerat i Python av en Decimal-instans. Den validerar indata med hjälp av DecimalValidator.
Has the following arguments:
- DecimalField.max_digitsLink to this definition
The maximum number of digits allowed in the number. Note that this number must be greater than or equal to
decimal_places. It’s always required on MySQL because this database doesn’t support numeric fields with no precision. It’s also required for all database backends whendecimal_placesis provided.
- DecimalField.decimal_placesLink to this definition
The number of decimal places to store with the number. It’s always required on MySQL because this database doesn’t support numeric fields with no precision. It’s also required for all database backends when
max_digitsis provided.
Om du t.ex. vill lagra siffror upp till 999,99 med en upplösning på 2 decimaler använder du:
models.DecimalField(..., max_digits=5, decimal_places=2)
Och för att lagra tal upp till cirka en miljard med en upplösning på 10 decimaler:
models.DecimalField(..., max_digits=19, decimal_places=10)
Standardformulärwidgeten för detta fält är en NumberInput när localize är False eller annars TextInput.
DurationFieldLink to this heading
- class DurationField(**options)Link to this definition
Ett fält för lagring av tidsperioder - modellerat i Python av timedelta. När den används på PostgreSQL är datatypen som används ett intervall och på Oracle är datatypen INTERVAL DAY (9) TO SECOND (6) ``. Annars används en ``bigint av mikrosekunder.
EmailFieldLink to this heading
- class EmailField(max_length=254, **options)Link to this definition
En CharField som kontrollerar att värdet är en giltig e-postadress med hjälp av EmailValidator.
FileFieldLink to this heading
- class FileField(upload_to='', storage=None, max_length=100, **options)Link to this definition
Ett fält för filuppladdning.
Har följande valfria argument:
- FileField.upload_toLink to this definition
Detta attribut ger ett sätt att ställa in uppladdningskatalogen och filnamnet, och kan ställas in på två sätt. I båda fallen skickas värdet till metoden
Storage.save().Om du anger ett strängvärde eller en
Pathkan det innehållastrftime()-formatering, som ersätts med datumet/tiden för filuppladdningen (så att uppladdade filer inte fyller upp den angivna katalogen). Till exempel:class MyModel(models.Model): # file will be uploaded to MEDIA_ROOT/uploads upload = models.FileField(upload_to="uploads/") # or... # file will be saved to MEDIA_ROOT/uploads/2015/01/30 upload = models.FileField(upload_to="uploads/%Y/%m/%d/")Om du använder standard
FileSystemStorage, kommer strängvärdet att läggas till dinMEDIA_ROOTsökväg för att bilda platsen på det lokala filsystemet där uppladdade filer kommer att lagras. Om du använder en annan lagring, kontrollera dokumentationen för den lagringen för att se hur den hanterarupload_to.upload_tokan också vara en anropbar funktion, t.ex. en funktion. Denna kommer att anropas för att erhålla uppladdningssökvägen, inklusive filnamnet. Denna anropbara funktion måste acceptera två argument och returnera en sökväg i Unix-stil (med snedstreck) som ska skickas vidare till lagringssystemet. De två argumenten är:Argument
Beskrivning
instansEn instans av modellen där
FileFieldär definierad. Mer specifikt är detta den särskilda instans där den aktuella filen bifogas.I de flesta fall har det här objektet inte sparats i databasen ännu, så om det använder standardinställningen
AutoFieldkanske det ännu inte har något värde för sitt primärnyckelfält.filnamnDet filnamn som ursprungligen gavs till filen. Detta kan eller kan inte tas med i beräkningen när den slutliga destinationssökvägen bestäms.
Till exempel:
def user_directory_path(instance, filename): # file will be uploaded to MEDIA_ROOT/user_<id>/<filename> return "user_{0}/{1}".format(instance.user.id, filename) class MyModel(models.Model): upload = models.FileField(upload_to=user_directory_path)
- FileField.storageLink to this definition
Ett lagringsobjekt eller en anropsbar funktion som returnerar ett lagringsobjekt. Detta hanterar lagring och hämtning av dina filer. Se Hantera filer för mer information om hur du tillhandahåller detta objekt.
Standardformulärwidgeten för detta fält är en ClearableFileInput.
Att använda en FileField eller en ImageField (se nedan) i en modell kräver några steg:
I din inställningsfil måste du definiera
MEDIA_ROOTsom den fullständiga sökvägen till en katalog där du vill att Django ska lagra uppladdade filer. (Av prestandaskäl lagras inte dessa filer i databasen.) DefinieraMEDIA_URLsom den publika URL:en för den katalogen. Se till att den här katalogen är skrivbar av webbserverns användarkonto.Lägg till
FileFieldellerImageFieldi din modell och definiera alternativetupload_toför att ange en underkatalog iMEDIA_ROOTsom ska användas för uppladdade filer.Allt som kommer att lagras i din databas är en sökväg till filen (i förhållande till
MEDIA_ROOT). Du kommer troligen att vilja använda det praktiska attributeturlsom tillhandahålls av Django. Om dinImageFieldtill exempel hetermug_shotkan du få den absoluta sökvägen till din bild i en mall med{{ object.mug_shot.url }}.
Anta till exempel att din MEDIA_ROOT är inställd på '/home/media' och upload_to är inställd på 'photos/%Y/%m/%d'. Delen '%Y/%m/%d' i upload_to är strftime()-formatering; '%Y' är det fyrsiffriga året, '%m' är den tvåsiffriga månaden och '%d' är den tvåsiffriga dagen. Om du laddar upp en fil den 15 januari 2007 kommer den att sparas i katalogen /home/media/photos/2007/01/15.
Om du vill hämta den uppladdade filens filnamn på disken eller filens storlek kan du använda attributen name respektive size; för mer information om tillgängliga attribut och metoder, se klassreferensen File och ämnesguiden Hantera filer.
Den uppladdade filens relativa URL kan erhållas med hjälp av attributet url. Internt anropar detta url()-metoden för den underliggande Storage-klassen.
Observera att när du hanterar uppladdade filer bör du vara mycket uppmärksam på var du laddar upp dem och vilken typ av filer de är, för att undvika säkerhetshål. Validera alla uppladdade filer så att du är säker på att filerna är vad du tror att de är. Om du till exempel blint låter någon ladda upp filer, utan validering, till en katalog som ligger i din webbservers dokumentrot, kan någon ladda upp ett CGI- eller PHP-skript och köra det skriptet genom att besöka dess URL på din webbplats. Tillåt inte det.
Observera också att även en uppladdad HTML-fil, eftersom den kan köras av webbläsaren (men inte av servern), kan utgöra säkerhetshot som motsvarar XSS- eller CSRF-attacker.
FileField-instanser skapas i din databas som varchar-kolumner med en maximal standardlängd på 100 tecken. Precis som för andra fält kan du ändra den maximala längden med argumentet max_length.
FileField och FieldFileLink to this heading
- class FieldFileLink to this definition
När du öppnar en FileField på en modell får du en instans av FieldFile som en proxy för åtkomst till den underliggande filen.
API:et för FieldFile speglar det för File, med en viktig skillnad: *Objektet som klassen omsluter är inte nödvändigtvis en omslutning kring Pythons inbyggda filobjekt * Istället är det en omslutning kring resultatet av Storage.open()-metoden, som kan vara ett File-objekt, eller det kan vara en anpassad lagrings implementering av File API.
Utöver API:et som ärvs från File, såsom read() och write(), innehåller FieldFile flera metoder som kan användas för att interagera med den underliggande filen:
- FieldFile.nameLink to this definition
Namnet på filen inklusive den relativa sökvägen från roten till Storage för den associerade FileField.
- FieldFile.pathLink to this definition
En skrivskyddad egenskap för att komma åt filens lokala filsystemssökväg genom att anropa path()-metoden i den underliggande Storage-klassen.
- FieldFile.sizeLink to this definition
Resultatet av den underliggande Storage.size()-metoden.
- FieldFile.urlLink to this definition
En skrivskyddad egenskap för att komma åt filens relativa URL genom att anropa url()-metoden i den underliggande Storage-klassen.
- FieldFile.open(mode='rb')Link to this definition
Öppnar eller återöppnar filen som är associerad med denna instans i angivet mode. Till skillnad från Pythons standardmetod open() returnerar den inte en filbeskrivare.
Eftersom den underliggande filen öppnas implicit vid åtkomst till den, kan det vara onödigt att anropa denna metod förutom för att återställa pekaren till den underliggande filen eller för att ändra mode.
- FieldFile.close()Link to this definition
Uppträder som Pythons standardmetod file.close() och stänger den fil som är kopplad till denna instans.
- FieldFile.save(name, content, save=True)Link to this definition
Den här metoden tar ett filnamn och filinnehåll och skickar dem till lagringsklassen för fältet och associerar sedan den lagrade filen med modellfältet. Om du manuellt vill associera fildata med FileField-instanser i din modell, används metoden save() för att bevara fildata.
Takes two required arguments: name which is the name of the file, and
content which is an object containing the file’s contents. The
optional save argument controls whether or not the model instance is
saved after the file associated with this field has been altered. Defaults to
True.
Observera att argumentet content ska vara en instans av django.core.files.File, inte Pythons inbyggda filobjekt. Du kan konstruera en File från ett befintligt Python-filobjekt så här:
from django.core.files import File
# Open an existing file using Python's built-in open()
f = open("/path/to/hello.world")
myfile = File(f)
Eller så kan du konstruera en från en Python-sträng så här:
from django.core.files.base import ContentFile
myfile = ContentFile("hello world")
För mer information, se Hantera filer.
- FieldFile.delete(save=True)Link to this definition
Raderar filen som är kopplad till denna instans och rensar alla attribut på fältet. Observera: Den här metoden stänger filen om den råkar vara öppen när delete() anropas.
Det valfria argumentet save styr om modellinstansen sparas eller inte efter att filen som är associerad med detta fält har tagits bort. Standardvärdet är True.
Observera att när en modell tas bort tas inte relaterade filer bort. Om du behöver rensa bort föräldralösa filer måste du hantera det själv (t.ex. med ett anpassat hanteringskommando som kan köras manuellt eller schemaläggas för att köras regelbundet via t.ex. cron).
FilePathFieldLink to this heading
- class FilePathField(path='', match=None, recursive=False, allow_files=True, allow_folders=False, max_length=100, **options)Link to this definition
En CharField vars valmöjligheter är begränsade till filnamnen i en viss katalog på filsystemet. Har några specialargument, varav det första är obligatoriskt:
- FilePathField.pathLink to this definition
Obligatorisk. Den absoluta filsystemssökvägen till en katalog från vilken denna
FilePathFieldska hämta sina val. Exempel:"/home/images".pathkan också vara en anropsbar funktion, t.ex. en funktion för att dynamiskt ställa in sökvägen vid körning. Exempel:import os from django.conf import settings from django.db import models def images_path(): return os.path.join(settings.LOCAL_FILE_DIR, "images") class MyModel(models.Model): file = models.FilePathField(path=images_path)
- FilePathField.matchLink to this definition
Valfritt. Ett reguljärt uttryck, som en sträng, som
FilePathFieldkommer att använda för att filtrera filnamn. Observera att regex kommer att tillämpas på basfilnamnet, inte på hela sökvägen. Exempel:"foo.*\.txt$", vilket matchar en fil som heterfoo23.txtmen intebar.txtellerfoo23.png.
- FilePathField.recursiveLink to this definition
Valfritt. Antingen
TrueellerFalse. Standard ärFalse. Anger om alla underkataloger tillpathska inkluderas
- FilePathField.allow_filesLink to this definition
Optional. Either
TrueorFalse. Default isTrue. Specifies whether files in the specified location should be included. Either this orallow_foldersmust beTrue.
- FilePathField.allow_foldersLink to this definition
Optional. Either
TrueorFalse. Default isFalse. Specifies whether folders in the specified location should be included. Either this orallow_filesmust beTrue.
Det enda potentiella problemet är att match gäller för det grundläggande filnamnet, inte den fullständiga sökvägen. Så i det här exemplet:
FilePathField(path="/home/images", match="foo.*", recursive=True)
…kommer att matcha /home/images/foo.png men inte /home/images/foo/bar.png eftersom match gäller för basfilnamnet (foo.png och bar.png).
FilePathField-instanser skapas i din databas som varchar-kolumner med en maximal standardlängd på 100 tecken. Precis som för andra fält kan du ändra den maximala längden med hjälp av argumentet max_length.
FloatFieldLink to this heading
- class FloatField(**options)Link to this definition
Ett flyttal som i Python representeras av en float-instans.
Standardformulärwidgeten för detta fält är en NumberInput när localize är False eller annars TextInput.
GeneratedFieldLink to this heading
- class GeneratedField(*, expression, output_field, db_persist, **kwargs)Link to this definition
Ett fält som alltid beräknas baserat på andra fält i modellen. Detta fält hanteras och uppdateras av databasen själv. Använder SQL-syntaxen GENERATED ALWAYS.
Det finns två typer av genererade kolumner: lagrade och virtuella. En lagrad genererad kolumn beräknas när den skrivs (infogas eller uppdateras) och tar upp lagringsutrymme som om det vore en vanlig kolumn. En virtuell genererad kolumn upptar ingen lagringsplats och beräknas när den läses. En virtuell genererad kolumn liknar alltså en vy och en lagrad genererad kolumn liknar en materialiserad vy.
- GeneratedField.expressionLink to this definition
Ett
Expressionsom används av databasen för att automatiskt ställa in fältvärdet varje gång modellen ändras.Uttrycken ska vara deterministiska och endast referera till fält inom modellen (i samma databastabell). Genererade fält kan inte referera till andra genererade fält. Databasbackends kan införa ytterligare begränsningar.
- GeneratedField.output_fieldLink to this definition
En modellfältsinstans för att definiera fältets datatyp.
- GeneratedField.db_persistLink to this definition
Bestämmer om databaskolumnen ska ta upp lagringsutrymme som om den vore en riktig kolumn. Om
False, fungerar kolumnen som en virtuell kolumn och tar inte upp lagringsutrymme i databasen.PostgreSQL < 18 only supports persisted columns. Oracle < 23ai/26ai (23.7) only supports virtual columns.
null has no effect on GeneratedField since whether the
column is nullable depends on the database and expression used.
GenericIPAddressFieldLink to this heading
- class GenericIPAddressField(protocol='both', unpack_ipv4=False, **options)Link to this definition
En IPv4- eller IPv6-adress i strängformat (t.ex. 192.0.2.30 eller 2a02:42fe::4). Standardformulärwidgeten för detta fält är en TextInput.
Normaliseringen av IPv6-adresser följer RFC 4291 Section 2.2 avsnitt 2.2, inklusive användning av det IPv4-format som föreslås i punkt 3 i det avsnittet, som ::ffff:192.0.2.0. Till exempel: skulle 2001:0::0:01 normaliseras till 2001::1, och ::ffff:0a0a:0a0a till ::ffff:10.10.10.10. Alla tecken konverteras till gemener.
- GenericIPAddressField.protocolLink to this definition
Begränsar giltiga indata till det angivna protokollet. Accepterade värden är
'both'(standard),'IPv4'eller'IPv6'. Matchningen är okänslig för skiftlägesskillnader.
- GenericIPAddressField.unpack_ipv4Link to this definition
Packar upp IPv4-mappade adresser som
::ffff:192.0.2.1. Om detta alternativ är aktiverat kommer den adressen att packas upp till192.0.2.1. Standard är inaktiverat. Kan endast användas närprotocolär inställt på'both'.
Om du tillåter tomma värden måste du tillåta null-värden eftersom tomma värden lagras som null.
ImageFieldLink to this heading
- class ImageField(upload_to=None, height_field=None, width_field=None, max_length=100, **options)Link to this definition
Ärver alla attribut och metoder från FileField, men validerar också att det uppladdade objektet är en giltig bild.
Förutom de specialattribut som finns för FileField har en ImageField även attributen height och width.
För att göra det lättare att ställa frågor om dessa attribut har ImageField följande valfria argument:
- ImageField.height_fieldLink to this definition
Namn på ett modellfält som automatiskt fylls i med bildens höjd varje gång ett bildobjekt ställs in.
- ImageField.width_fieldLink to this definition
Namn på ett modellfält som automatiskt fylls i med bildens bredd varje gång ett bildobjekt ställs in.
Kräver biblioteket pillow.
ImageField-instanser skapas i din databas som varchar-kolumner med en maximal standardlängd på 100 tecken. Precis som för andra fält kan du ändra den maximala längden med argumentet max_length.
Standardformulärwidgeten för detta fält är en ClearableFileInput.
IntegerFieldLink to this heading
- class IntegerField(**options)Link to this definition
Ett heltal. Värden är endast tillåtna mellan vissa (databasberoende) punkter. Värden från -2147483648 till 2147483647 är kompatibla i alla databaser som stöds av Django.
Den använder MinValueValidator och MaxValueValidator för att validera inmatningen baserat på de värden som standarddatabasen stöder.
Standardformulärwidgeten för detta fält är en NumberInput när localize är False eller annars TextInput.
JSONFieldLink to this heading
- class JSONField(encoder=None, decoder=None, **options)Link to this definition
Ett fält för lagring av JSON-kodade data. I Python representeras data i Pythons ursprungliga format: ordböcker, listor, strängar, siffror, booleaner och None.
JSONField stöds på MariaDB, MySQL, Oracle, PostgreSQL och SQLite (med JSON1-tillägget aktiverat).
- JSONField.encoderLink to this definition
An optional
json.JSONEncodersubclass to serialize data types not supported by the standard JSON serializer (e.g.datetime.datetimeorUUID). For example, you can use theDjangoJSONEncoderclass.Standardvärdet är
json.JSONEncoder.
- JSONField.decoderLink to this definition
An optional
json.JSONDecodersubclass to deserialize the value retrieved from the database. The value will be in the format chosen by the custom encoder (most often a string). Your deserialization may need to account for the fact that you can’t be certain of the input type. For example, you run the risk of returning adatetimethat was actually a string that just happened to be in the same format chosen fordatetimes.Standardvärdet är
json.JSONDecoder.
För att fråga JSONField i databasen, se Fråga om JSONField.
PositivBigIntegerFieldLink to this heading
- class PositiveBigIntegerField(**options)Link to this definition
Som en PositiveIntegerField, men tillåter bara värden under en viss (databasberoende) punkt. Värden från 0 till 9223372036854775807 är kompatibla i alla databaser som stöds av Django.
PositivIntegerFieldLink to this heading
- class PositiveIntegerField(**options)Link to this definition
Som en IntegerField, men måste vara antingen positiv eller noll (0). Värden är endast tillåtna under en viss (databasberoende) punkt. Värden från 0 till 2147483647 är kompatibla i alla databaser som stöds av Django. Värdet 0 accepteras av bakåtkompatibilitetsskäl.
Positiv liten heltalsfältLink to this heading
- class PositiveSmallIntegerField(**options)Link to this definition
Som en PositiveIntegerField, men tillåter bara värden under en viss (databasberoende) punkt. Värden från 0 till 32767 är kompatibla i alla databaser som stöds av Django.
SlugFieldLink to this heading
- class SlugField(max_length=50, **options)Link to this definition
Slug är en term för tidningar. En slug är en kort etikett för något, som bara innehåller bokstäver, siffror, understrykningar eller bindestreck. De används i allmänhet i webbadresser.
Precis som en CharField kan du ange max_length (läs även anmärkningen om databasportabilitet och max_length i det avsnittet). Om max_length inte anges kommer Django att använda en standardlängd på 50.
Innebär att Field.db_index sätts till True.
It is often useful to automatically prepopulate a SlugField based on the value
of some other value. You can do this automatically in the admin using
prepopulated_fields.
Den använder validate_slug eller validate_unicode_slug för validering.
- SlugField.allow_unicodeLink to this definition
Om
True, accepterar fältet Unicode-bokstäver utöver ASCII-bokstäver. Standardvärdet ärFalse.
SmallAutoFieldLink to this heading
- class SmallAutoField(**options)Link to this definition
Som en AutoField, men tillåter bara värden under en viss (databasberoende) gräns. Värden från 1 till 32767 är kompatibla i alla databaser som stöds av Django.
LitenIntegerFieldLink to this heading
- class SmallIntegerField(**options)Link to this definition
Som en IntegerField, men tillåter bara värden under en viss (databasberoende) punkt. Värden från -32768 till 32767 är kompatibla i alla databaser som stöds av Django.
TextfältLink to this heading
- class TextField(**options)Link to this definition
Ett stort textfält. Standardformulärwidgeten för detta fält är en Textarea.
Om du anger ett max_length-attribut kommer det att återspeglas i Textarea-widgeten i det autogenererade formulärfältet. Det verkställs dock inte på modell- eller databasnivå. Använd en CharField för det.
- TextField.db_collationLink to this definition
Valfritt. Databasens kollationsnamn för fältet.
TimeFieldLink to this heading
- class TimeField(auto_now=False, auto_now_add=False, **options)Link to this definition
En tid, representerad i Python av en datetime.time-instans. Accepterar samma autopopuleringsalternativ som DateField.
Standardformulärwidgeten för detta fält är en TimeInput. Administratören lägger till några JavaScript-genvägar.
URL-fältLink to this heading
- class URLField(max_length=200, **options)Link to this definition
En CharField för en URL, validerad av URLValidator.
Standardformulärwidgeten för det här fältet är en URLInput.
Som alla CharField-subklasser tar URLField det valfria argumentet max_length. Om du inte anger max_length används standardvärdet 200.
UUIDFieldLink to this heading
- class UUIDField(**options)Link to this definition
A field for storing universally unique identifiers. Uses Python’s
UUID class. When used on PostgreSQL and MariaDB, this
stores in a uuid datatype, otherwise in a char(32).
Universellt unika identifierare är ett bra alternativ till AutoField för primary_key. Databasen kommer inte att generera UUID åt dig, så det rekommenderas att du använder default:
import uuid
from django.db import models
class MyUUIDModel(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
# other fields
Observera att en callable (med parenteserna utelämnade) skickas till default, inte en instans av UUID.
API-referens för fältLink to this heading
- class FieldLink to this definition
Fieldär en abstrakt klass som representerar en kolumn i en databastabell. Django använder fält för att skapa databastabellen (db_type()), för att mappa Python-typer till databasen (get_prep_value()) och vice versa (from_db_value()).A field is thus a fundamental piece in different Django APIs, notably the
Modeland theQuerySetAPIs.I modeller är ett fält instansierat som ett klassattribut och representerar en viss tabellkolumn, se Modeller. Det har attribut som
nullochunique, och metoder som Django använder för att mappa fältvärdet till databasspecifika värden.En
Fieldär en underklass avRegisterLookupMixinoch därmed kan bådeTransformochLookup`registreras på den för att användas iQuerySet(t.ex.field_name__exact="foo"). Alla inbyggda lookups är registrerade som standard.Alla Djangos inbyggda fält, till exempel
CharField, är särskilda implementeringar avField. Om du behöver ett anpassat fält kan du antingen subklassa något av de inbyggda fälten eller skriva ettFieldfrån början. I båda fallen, se Så här skapar du anpassade modellfält.- descriptionLink to this definition
En utförlig beskrivning av fältet, t.ex. för programmet
django.contrib.admindocs.Beskrivningen kan vara av formen:
description = _("String (up to %(max_length)s)")där argumenten interpoleras från fältets
__dict__.
- descriptor_classLink to this definition
A class implementing the descriptor protocol that is instantiated and assigned to the model instance attribute. The constructor must accept a single argument, the
Fieldinstance. Overriding this class attribute allows for customizing the get and set behavior.
För att mappa en
Fieldtill en databasspecifik typ, exponerar Django flera metoder:- get_internal_type()Link to this definition
Returnerar en sträng som namnger detta fält för backend-specifika ändamål. Som standard returneras klassnamnet.
Se Emulering av inbyggda fälttyper för användning i anpassade fält.
- db_type(connection)Link to this definition
Returnerar databaskolumnens datatyp för
Field, med hänsyn tagen tillconnection.Se Anpassade databastyper för användning i anpassade fält.
- rel_db_type(connection)Link to this definition
Returnerar databasens kolumndatatyp för fält som
ForeignKeyochOneToOneFieldsom pekar påField, med hänsyn tagen tillconnection.Se Anpassade databastyper för användning i anpassade fält.
Det finns tre huvudsakliga situationer där Django behöver interagera med databasens backend och fält:
när den frågar databasen (Python-värde -> databasens backend-värde)
när den laddar data från databasen (databasens backend-värde -> Python-värde)
när den sparar i databasen (Python-värde -> databasens backend-värde)
Vid frågor används
get_db_prep_value()ochget_prep_value():- get_prep_value(value)Link to this definition
valueär det aktuella värdet för modellens attribut och metoden ska returnera data i ett format som har förberetts för att användas som en parameter i en fråga.Se Konvertera Python-objekt till frågevärden för användning.
- get_db_prep_value(value, connection, prepared=False)Link to this definition
Converts
valueto a backend-specific value. By default it returnsvalueifprepared=True, andget_prep_value(value)otherwise.Se Konvertering av frågevärden till databasvärden för användning.
Vid laddning av data används
from_db_value():- from_db_value(value, expression, connection)Link to this definition
Konverterar ett värde som returneras av databasen till ett Python-objekt. Det är det omvända av
get_prep_value().Den här metoden används inte för de flesta inbyggda fält eftersom databasens backend redan returnerar rätt Python-typ, eller så gör backend själv konverteringen.
uttryckär detsamma somsjälv.Se Konvertera värden till Python-objekt för användning.
När du sparar används
pre_save()ochget_db_prep_save():- get_db_prep_save(value, connection)Link to this definition
Samma som
get_db_prep_value(), men anropas när fältvärdet måste sparas till databasen. Som standard returnerasget_db_prep_value().
- pre_save(model_instance, add)Link to this definition
Metod som anropas före
get_db_prep_save()för att förbereda värdet innan det sparas (t.ex. förDateField.auto_now).model_instanceär den instans som detta fält tillhör ochaddär om instansen sparas i databasen för första gången.Det bör returnera värdet på lämpligt attribut från
model_instanceför detta fält. Attributnamnet finns iself.attname(detta ställs in avField).Se Förbehandling av värden före lagring för användning.
Fält får ofta sina värden som en annan typ, antingen från serialisering eller från formulär.
- to_python(value)Link to this definition
Konverterar värdet till det korrekta Python-objektet. Det fungerar som det omvända av
value_to_string(), och anropas också iclean().Se Konvertera värden till Python-objekt för användning.
Förutom att spara i databasen måste fältet också veta hur det ska serialisera sitt värde:
- value_from_object(obj)Link to this definition
Returnerar fältets värde för den angivna modellinstansen.
Denna metod används ofta av
value_to_string().
- value_to_string(obj)Link to this definition
Konverterar
objtill en sträng. Används för att serialisera fältets värde.Se Konvertering av fältdata för serialisering för användning.
When using model forms, the
Fieldneeds to know which form field it should be represented by:- formfield(form_class=None, choices_form_class=None, **kwargs)Link to this definition
Returnerar standard
django.forms.Fieldför detta fält förModelForm.Om
formfield()åsidosätts för att returneraNone, utesluts detta fält frånModelForm.Som standard, om både
form_classochchoices_form_classärNone, användsCharField. Om fältet harchoicesochchoices_form_classinte är specificerat, användsTypedChoiceField.Se specificerande-form-fält-för-modell-fält för användning.
- deconstruct()Link to this definition
Returnerar en 4-tupel med tillräckligt med information för att återskapa fältet:
Namnet på fältet i modellen.
Importsökvägen för fältet (t.ex.
"django.db.models.IntegerField"). Detta bör vara den mest portabla versionen, så mindre specifik kan vara bättre.En lista med positionella argument.
En dikt av nyckelordsargument.
Denna metod måste läggas till fält före 1.7 för att migrera dess data med hjälp av Migreringar.
Registrering och hämtning av uppslagsordLink to this heading
Field implementerar lookup registration API. API:et kan användas för att anpassa vilka uppslagsord som är tillgängliga för en fältklass och dess instanser, och hur uppslagsord hämtas från ett fält.
Referens till fältattributLink to this heading
Varje Field-instans innehåller flera attribut som gör det möjligt att introspektera dess beteende. Använd dessa attribut istället för isinstance-kontroller när du behöver skriva kod som är beroende av ett fälts funktionalitet. Dessa attribut kan användas tillsammans med Model._meta API för att begränsa en sökning efter specifika fälttyper. Anpassade modellfält bör implementera dessa flaggor.
Attribut för fältLink to this heading
- Field.auto_createdLink to this definition
Boolesk flagga som anger om fältet skapades automatiskt, t.ex.
OneToOneFieldsom används vid modellarv.
- Field.concreteLink to this definition
Boolesk flagga som anger om fältet har en databaskolumn associerad med sig.
Boolesk flagga som anger om ett fält är dolt och inte ska returneras av
Options.get_fields()som standard. Ett exempel är det omvända fältet för enForeignKeymed ettrelated_namesom börjar med'+'.
- Field.is_relationLink to this definition
Boolesk flagga som anger om ett fält innehåller referenser till en eller flera andra modeller för dess funktionalitet (t.ex.
ForeignKey,ManyToManyField,OneToOneField, etc.).
- Field.modelLink to this definition
Returnerar den modell som fältet är definierat för. Om ett fält definieras på en superklass av en modell, kommer
modelatt hänvisa till superklassen, inte klassen för instansen.
Attribut för fält med relationerLink to this heading
Dessa attribut används för att fråga efter kardinalitet och andra detaljer i en relation. Dessa attribut finns på alla fält, men de har endast booleska värden (i stället för None) om fältet är en relationstyp (Field.is_relation=True).
- Field.many_to_manyLink to this definition
Boolesk flagga som är
Trueom fältet har en many-to-many-relation;Falseannars. Det enda fältet som ingår i Django där detta ärTrueärManyToManyField.
- Field.many_to_oneLink to this definition
Boolesk flagga som är
Trueom fältet har en många-till-en-relation, t.ex. enForeignKey; annarsFalse.
- Field.one_to_manyLink to this definition
Boolesk flagga som är
Trueom fältet har en en-till-många-relation, t.ex. enGenericRelationeller motsatsen till enForeignKey; annarsFalse.
- Field.one_to_oneLink to this definition
Boolesk flagga som är
Trueom fältet har en en-till-en-relation, t.ex. ettOneToOneField; annarsFalse.
Pekar på den modell som fältet hänför sig till. Till exempel:
AuthoriForeignKey(Author, on_delete=models.CASCADE). Denrelated_modelför enGenericForeignKeyär alltidNone.