Sök…


parametrar

Parameter detaljer
null Om det är sant kan tomma värden lagras som null i databasen
tom Om det är sant, kommer fältet inte att krävas i formulär. Om fält lämnas tomma använder Django standardfältvärdet.
val En iterable av 2-element iterables som kan användas som val för detta fält. Om inställt, visas fältet som en listruta i administratören. [('m', 'Male'),('f','Female'),('z','Prefer Not to Disclose')] . För att gruppera alternativ, bo bara värdena: [('Video Source',((1,'YouTube'),(2,'Facebook')),('Audio Source',((3, 'Soundcloud'),(4, 'Spotify'))]
db_column Som standard använder django fältnamnet för databaskolumnen. Använd detta för att ange ett anpassat namn
db_index Om det är True skapas ett index i det här fältet i databasen
db_tablespace Tabellområdet som ska användas för det här fältets index. Detta fält används endast om databasmotorn stöder det, annars ignoreras det .
standard Standardvärdet för detta fält. Kan vara ett värde eller ett konverterbart objekt. För muterbara standardvärden (en lista, en uppsättning, en ordlista) måste du använda en räknaren. På grund av kompatibilitet med migreringar kan du inte använda lambdas.
redigerbar Om det är False visas fältet inte i modelladministratören eller i någon ModelForm . Standard är True .
felmeddelanden Används för att anpassa standardfelmeddelandena som visas för detta fält. Värdet är en ordlista med knapparna som representerar felet och värdet är meddelandet. Standardnycklar (för felmeddelanden) är null , blank , invalid , invalid_choice , unique och unique_for_date ; ytterligare felmeddelanden kan definieras av anpassade fält.
Hjälp text Text som ska visas med fältet för att hjälpa användare. HTML är tillåtet.
on_delete När ett objekt som refereras av en ForeignKey tas bort kommer Django att emulera beteendet hos SQL-begränsningen som specificeras av on_delete-argumentet. Detta är det andra positionsargumentet för både ForeignKey och OneToOneField . Andra fält har inte detta argument.
primärnyckel Om det är True kommer detta fält att vara den primära nyckeln. Django lägger automatiskt till en primär nyckel; så detta krävs endast om du vill skapa en anpassad primärnyckel. Du kan bara ha en primär nyckel per modell.
unik Om det är True , tas fel upp om dubbla värden anges för det här fältet. Detta är en databasbegränsning och inte bara ett användargränssnittsblock.
unique_for_date Ställ in värdet på ett DateField eller DateTimeField , och fel kommer att tas upp om det finns duplicerade värden för samma datum eller datumtid .
unique_for_month Liknar unique_for_date , förutom att kontroller är begränsade för månaden.
unique_for_year Liknar unique_for_date , förutom att kontroller är begränsade till året.
verbose_name Ett vänligt namn på fältet, som används av django på olika platser (som att skapa etiketter i admin och modellformer).
validerare En lista över validerare för detta fält.

Anmärkningar

  • Du kan skriva egna fält om du finner det nödvändigt
  • Du kan åsidosätta funktioner i basmodellklassen, vanligtvis save() -funktionen

Antal fält

Exempel på numeriska fält ges:

Auto

Ett automatisk inkrementerande heltal som vanligtvis används för primärnycklar.

from django.db import models

class MyModel(models.Model):
    pk = models.AutoField()

Varje modell får som standard ett primärt nyckelfält (kallat id ). Därför är det inte nödvändigt att kopiera ett ID-fält i modellen för en primärnyckel.


BigIntegerField

Ett heltalskopplingsnummer från -9223372036854775808 till 9223372036854775807 ( 8 Bytes ).

from django.db import models

class MyModel(models.Model):
    number_of_seconds = models.BigIntegerField()

IntegerField

IntegerField används för att lagra heltal från -2147483648 till 2147483647 ( 4 Bytes ).

from django.db import models

class Food(models.Model):
    name = models.CharField(max_length=255)
    calorie = models.IntegerField(default=0)

default är inte obligatorisk. Men det är användbart att ställa in ett standardvärde.


PositiveIntegerField

Som ett heltalsfält, men måste vara antingen positivt eller noll (0). PositiveIntegerField används för att lagra heltal från 0 till 2147483647 ( 4 Bytes ). Detta kan vara användbart på fält som bör vara semantiskt positivt. Om du till exempel registrerar mat med kalorierna bör det inte vara negativt. Detta fält förhindrar negativa värden via dess valideringar.

from django.db import models

class Food(models.Model):
    name = models.CharField(max_length=255)
    calorie = models.PositiveIntegerField(default=0)

default är inte obligatorisk. Men det är användbart att ställa in ett standardvärde.


SmallIntegerField

SmallIntegerField används för att lagra heltal från -32768 till 32767 ( 2 Bytes ). Detta fält är användbart för värden som inte är extremer.

from django.db import models

class Place(models.Model):
    name = models.CharField(max_length=255)
    temperature = models.SmallIntegerField(null=True)

PositiveSmallIntegerField

SmallIntegerField används för att lagra heltal från 0 till 32767 ( 2 Bytes ). Precis som SmallIntegerField är detta fält användbart för värden som inte går så högt och bör vara semantiskt positiva. Det kan till exempel lagra ålder som inte kan vara negativ.

from django.db import models

class Staff(models.Model):
    first_name = models.CharField(max_length=255)
    last_name = models.CharField(max_length=255)
    age = models.PositiveSmallIntegerField(null=True)

Förutom PositiveSmallIntegerField är användbart för val, detta är det djangoiska sättet att implementera Enum:

from django.db import models
from django.utils.translation import gettext as _

APPLICATION_NEW = 1
APPLICATION_RECEIVED = 2
APPLICATION_APPROVED = 3
APPLICATION_REJECTED = 4

APLICATION_CHOICES = (
    (APPLICATION_NEW, _('New')),
    (APPLICATION_RECEIVED, _('Received')),
    (APPLICATION_APPROVED, _('Approved')),
    (APPLICATION_REJECTED, _('Rejected')),
)

class JobApplication(models.Model):
    first_name = models.CharField(max_length=255)
    last_name = models.CharField(max_length=255)
    status = models.PositiveSmallIntegerField(
        choices=APLICATION_CHOICES, 
        default=APPLICATION_NEW
    )
    ...

Definition av val som klassvariabler eller modulvariabler beroende på situationen är ett bra sätt att använda dem. Om val skickas till fältet utan vänliga namn än det kommer att skapa förvirring.


DecimalField

Ett decimaltal med fast precision, representerat i Python med en decimal instans. Till skillnad från IntegerField och dess derivat har detta fält 2 nödvändiga argument:

  1. DecimalField.max_digits : Det maximala antalet siffror som är tillåtet i antalet. Observera att detta nummer måste vara större än eller lika med decimal_platser.
  2. DecimalField.decimal_places : Antalet decimaler som ska lagras med antalet.

Om du vill lagra siffror upp till 99 med 3 decimaler måste du använda max_digits=5 och decimal_places=3 :

class Place(models.Model):
    name = models.CharField(max_length=255)
    atmospheric_pressure = models.DecimalField(max_digits=5, decimal_places=3)

BinaryField

Detta är ett specialiserat fält som används för att lagra binär data. Den accepterar bara byte . Data är bas64 seriellt vid lagring.

Eftersom detta lagrar binära data, kan detta fält inte användas i ett filter.

from django.db import models

class MyModel(models.Model):
    my_binary_data = models.BinaryField()

Charfield

CharField används för att lagra definierade textlängder. I exemplet nedan kan upp till 128 tecken text lagras i fältet. Att ange en sträng längre än detta kommer att leda till att ett valideringsfel höjs.

from django.db import models

class MyModel(models.Model):
    name = models.CharField(max_length=128, blank=True)

DateTimeField

DateTimeField används för att lagra datumtidsvärden.

class MyModel(models.Model):
    start_time = models.DateFimeField(null=True, blank=True)
    created_on = models.DateTimeField(auto_now_add=True)
    updated_on = models.DateTimeField(auto_now=True)

A DateTimeField har två valfria parametrar:

  • auto_now_add ställer in auto_now_add värde till aktuell datetime när objektet skapas.

  • auto_now ställer in auto_now värde till aktuell datetime varje gång fältet sparas.

Dessa alternativ och default är ömsesidigt exklusiva.

Främmande nyckel

ForeignKey-fältet används för att skapa en many-to-one relation mellan modeller. Inte som de flesta andra fält kräver positionsargument. Följande exempel visar bil- och ägarförhållandet:

from django.db import models

class Person(models.Model):
    GENDER_FEMALE = 'F'
    GENDER_MALE = 'M'

    GENDER_CHOICES = (
        (GENDER_FEMALE, 'Female'),
        (GENDER_MALE, 'Male'),
    )

    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)
    gender = models.CharField(max_length=1, choices=GENDER_CHOICES)
    age = models.SmallIntegerField()


class Car(model.Model)
    owner = models.ForeignKey('Person')
    plate = models.CharField(max_length=15)
    brand = models.CharField(max_length=50)
    model = models.CharField(max_length=50)
    color = models.CharField(max_length=50)

Det första argumentet i fältet är den klass som modellen är relaterad till. Det andra positionsargumentet är on_delete argument. I de aktuella versionerna krävs detta argument inte, men det kommer att krävas i Django 2.0. Argumentets standardfunktioner visas enligt följande:

class Car(model.Model)
    owner = models.ForeignKey('Person', on_delete=models.CASCADE)
    ...

Detta kommer att göra att bilobjekt raderas från modellen när dess ägare raderas från personmodellen. Detta är standardfunktionen.

class Car(model.Model)
    owner = models.ForeignKey('Person', on_delete=models.PROTECT)
    ...

Detta förhindrar att personobjekt raderas om de är relaterade till minst ett bilobjekt. Alla bilobjekt som hänvisar till ett Personobjekt bör raderas först. Och sedan kan Personobjektet raderas.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow