Zoeken…


parameters

Parameter Details
nul Indien waar, kunnen lege waarden als null in de database worden opgeslagen
blanco Als dit waar is, is het veld niet verplicht in formulieren. Als velden leeg worden gelaten, gebruikt Django de standaardveldwaarde.
keuzes Een iterabele iterabelen met 2 elementen die kunnen worden gebruikt als keuzes voor dit veld. Indien ingesteld, wordt het veld weergegeven als een vervolgkeuzelijst in de admin. [('m', 'Male'),('f','Female'),('z','Prefer Not to Disclose')] . Om opties te groeperen, nestelt u eenvoudig de waarden: [('Video Source',((1,'YouTube'),(2,'Facebook')),('Audio Source',((3, 'Soundcloud'),(4, 'Spotify'))]
db_column Standaard gebruikt django de veldnaam voor de databasekolom. Gebruik dit om een aangepaste naam op te geven
db_index Indien True , wordt een index gemaakt op dit veld in de database
db_tablespace De tabelruimte die moet worden gebruikt voor de index van dit veld. Dit veld wordt alleen gebruikt als de database-engine dit ondersteunt, anders wordt het genegeerd .
standaard De standaardwaarde voor dit veld. Kan een waarde of een opvraagbaar object zijn. Voor veranderlijke standaardwaarden (een lijst, een set, een woordenboek) moet u een opvraagbare gebruiken. Vanwege compatibiliteit met migraties kunt u geen lambdas gebruiken.
bewerkbare Indien False , wordt het veld niet getoond in de ModelForm of in een ModelForm . Standaard is True .
foutmeldingen Wordt gebruikt om de standaardfoutmeldingen voor dit veld aan te passen. De waarde is een woordenboek, waarbij de sleutels de fout vertegenwoordigen en de waarde het bericht is. Standaardsleutels (voor foutmeldingen) zijn null , blank , invalid , invalid_choice , unique en unique_for_date ; aanvullende foutmeldingen kunnen worden gedefinieerd door aangepaste velden.
hulp tekst Tekst die met het veld moet worden weergegeven om gebruikers te helpen. HTML is toegestaan.
on_delete Wanneer een object waarnaar wordt verwezen door een ForeignKey wordt verwijderd, emuleert Django het gedrag van de SQL-beperking die is opgegeven door het argument on_delete. Dit is het tweede positionele argument voor zowel de velden ForeignKey als OneToOneField . Andere velden hebben dit argument niet.
hoofdsleutel Indien True , is dit veld de primaire sleutel. Django voegt automatisch een primaire sleutel toe; dus dit is alleen vereist als u een aangepaste primaire sleutel wilt maken. U kunt slechts één primaire sleutel per model hebben.
uniek Indien True , worden fouten gegenereerd als dubbele waarden worden ingevoerd voor dit veld. Dit is een beperking op databaseniveau en niet alleen een gebruikersinterfaceblok.
unique_for_date Stel de waarde in op DateField of DateTimeField en er worden fouten DateField als er dubbele waarden zijn voor dezelfde datum of datum .
unique_for_month Vergelijkbaar met unique_for_date , behalve dat de controles beperkt zijn voor de maand.
unique_for_year Vergelijkbaar met unique_for_date voor unique_for_date , behalve dat controles beperkt zijn tot het jaar.
verbose_name Een vriendelijke naam voor het veld, gebruikt door Django op verschillende plaatsen (zoals het maken van labels in de admin- en modelformulieren).
validators Een lijst met validators voor dit veld.

Opmerkingen

  • U kunt uw eigen velden schrijven als u dit nodig vindt
  • U kunt functies van de basismodelklasse, meestal de functie save() negeren

Nummervelden

Voorbeelden van numerieke velden worden gegeven:

AutoField

Een automatisch oplopend geheel getal dat meestal wordt gebruikt voor primaire sleutels.

from django.db import models

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

Elk model krijgt standaard een primair sleutelveld ( id ). Daarom is het niet nodig om een id-veld in het model te dupliceren voor een primaire sleutel.


BigIntegerField

Een geheel passend aantal van -9223372036854775808 tot 9223372036854775807 ( 8 Bytes ).

from django.db import models

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

IntegerField

Het IntegerField wordt gebruikt om gehele waarden op te slaan van -2147483648 tot 2147483647 ( 4 Bytes ).

from django.db import models

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

default parameter is niet verplicht. Maar het is handig om een standaardwaarde in te stellen.


PositiveIntegerField

Zoals een IntegerField, maar moet positief of nul (0) zijn. Het PositiveIntegerField wordt gebruikt om gehele waarden van 0 tot 2147483647 ( 4 Bytes ) op te slaan. Dit kan handig zijn op een veld dat semantisch positief moet zijn. Als u bijvoorbeeld voedingsmiddelen met calorieën opneemt, mag dit niet negatief zijn. Dit veld voorkomt negatieve waarden via de validaties.

from django.db import models

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

default parameter is niet verplicht. Maar het is handig om een standaardwaarde in te stellen.


SmallIntegerField

Het SmallIntegerField wordt gebruikt om gehele waarden van -32768 tot 32767 ( 2 Bytes ) op te slaan. Dit veld is handig voor waarden en niet voor extremen.

from django.db import models

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

PositiveSmallIntegerField

Het SmallIntegerField wordt gebruikt om gehele waarden van 0 tot 32767 ( 2 Bytes ) op te slaan. Net als SmallIntegerField is dit veld nuttig voor waarden die niet zo hoog gaan en moet het semantisch positief zijn. Het kan bijvoorbeeld leeftijd opslaan die niet negatief kan zijn.

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)

Naast PositiveSmallIntegerField is handig voor keuzes, dit is de Djangoïsche manier om Enum te implementeren:

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
    )
    ...

Definitie van de keuzes als klassenvariabelen of modulevariabelen volgens de situatie is een goede manier om ze te gebruiken. Als keuzes worden doorgegeven aan het veld zonder beschrijvende namen, dan zal dit verwarring veroorzaken.


DecimalField

Een decimaal getal met vaste precisie, vertegenwoordigd in Python door een decimale instantie. In tegenstelling tot IntegerField en zijn derivaten heeft dit veld 2 verplichte argumenten:

  1. DecimalField.max_digits : het maximale aantal toegestane cijfers in het nummer. Merk op dat dit aantal groter moet zijn dan of gelijk aan decimale_plaatsen.
  2. DecimalField.decimal_places : het aantal decimalen dat moet worden opgeslagen met het nummer.

Als u getallen tot 99 met 3 decimalen wilt opslaan, moet u max_digits=5 en decimal_places=3 :

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

BinaryField

Dit is een gespecialiseerd veld dat wordt gebruikt om binaire gegevens op te slaan. Het accepteert alleen bytes . Gegevens worden bij opslag geserialiseerd met base64.

Aangezien dit binaire gegevens opslaat, kan dit veld niet in een filter worden gebruikt.

from django.db import models

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

Charfield

Het CharField wordt gebruikt voor het opslaan van gedefinieerde tekstlengtes. In het onderstaande voorbeeld kunnen maximaal 128 tekens tekst in het veld worden opgeslagen. Als u een tekenreeks langer invoert, wordt een validatiefout gegenereerd.

from django.db import models

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

DateTimeField

DateTimeField wordt gebruikt om datum-tijdwaarden op te slaan.

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)

Een DateTimeField heeft twee optionele parameters:

  • auto_now_add stelt de waarde van het veld in op de huidige datumtijd wanneer het object wordt gemaakt.

  • auto_now stelt de waarde van het veld in op de huidige datumtijd telkens wanneer het veld wordt opgeslagen.

Deze opties en de default sluiten elkaar uit.

Vreemde sleutel

Het veld ForeignKey wordt gebruikt om een many-to-one relatie tussen modellen te maken. Niet zoals de meeste andere velden vereist positionele argumenten. Het volgende voorbeeld toont de relatie tussen auto en eigenaar:

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)

Het eerste argument van het veld is de klasse waaraan het model is gerelateerd. Het tweede positionele argument is het argument on_delete . In de huidige versies is dit argument niet vereist, maar wel in Django 2.0. De standaardfunctionaliteit van het argument wordt als volgt weergegeven:

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

Dit zorgt ervoor dat Auto-objecten uit het model worden verwijderd wanneer de eigenaar van het Persoonsmodel wordt verwijderd. Dit is de standaardfunctionaliteit.

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

Dit voorkomt dat Person-objecten worden verwijderd als ze gerelateerd zijn aan ten minste één Car-object. Alle Car-objecten die verwijzen naar een Person-object, moeten eerst worden verwijderd. En dan kan het Persoonsobject worden verwijderd.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow