Suche…


Parameter

Parameter Einzelheiten
Null Bei true werden leere Werte in der Datenbank möglicherweise als null gespeichert
leer Wenn true, ist das Feld in Formularen nicht erforderlich. Wenn Felder leer bleiben, verwendet Django den Standardfeldwert.
Wahlmöglichkeiten Eine Iteration von 2-Element-Iterablen, die als Auswahl für dieses Feld verwendet werden sollen. Wenn gesetzt, wird das Feld als Dropdown-Liste im Admin angezeigt. [('m', 'Male'),('f','Female'),('z','Prefer Not to Disclose')] . Um Optionen zu gruppieren, verschachteln Sie einfach die Werte: [('Video Source',((1,'YouTube'),(2,'Facebook')),('Audio Source',((3, 'Soundcloud'),(4, 'Spotify'))]
db_column Standardmäßig verwendet django den Feldnamen für die Datenbankspalte. Verwenden Sie dies, um einen benutzerdefinierten Namen anzugeben
db_index Bei True wird für dieses Feld in der Datenbank ein Index erstellt
db_tablespace Der Tabellenbereich, der für den Index dieses Felds verwendet werden soll. Dieses Feld wird nur verwendet, wenn es vom Datenbankmodul unterstützt wird. Andernfalls wird es ignoriert .
Standard Der Standardwert für dieses Feld. Kann ein Wert oder ein aufrufbares Objekt sein. Für veränderliche Standardwerte (eine Liste, ein Set, ein Wörterbuch) müssen Sie ein aufrufbares verwenden. Aufgrund der Kompatibilität mit Migrationen können Sie keine Lambdas verwenden.
bearbeitbar Bei False wird das Feld weder im ModelForm noch in einer ModelForm . Standardeinstellung ist " True .
Fehlermeldungen Dient zum Anpassen der Standardfehlermeldungen, die für dieses Feld angezeigt werden. Der Wert ist ein Wörterbuch, wobei die Schlüssel den Fehler und der Wert die Nachricht darstellen. Standardschlüssel (für Fehlermeldungen) sind null , blank , invalid , invalid_choice , unique und unique_for_date ; Zusätzliche Fehlermeldungen können durch benutzerdefinierte Felder definiert werden.
Hilfstext Text, der mit dem Feld angezeigt werden soll, um Benutzer zu unterstützen. HTML ist erlaubt.
on_delete Wenn ein von einem ForeignKey referenziertes Objekt gelöscht wird, emuliert Django das Verhalten der durch das Argument on_delete angegebenen SQL-Einschränkung. Dies ist das zweite Positionsargument für die Felder ForeignKey und OneToOneField . Andere Felder haben dieses Argument nicht.
Primärschlüssel Bei True ist dieses Feld der Primärschlüssel. Django fügt automatisch einen Primärschlüssel hinzu. Dies ist nur erforderlich, wenn Sie einen benutzerdefinierten Primärschlüssel erstellen möchten. Sie können nur einen Primärschlüssel pro Modell verwenden.
einzigartig Bei True werden Fehler ausgegeben, wenn doppelte Werte für dieses Feld eingegeben werden. Dies ist eine Einschränkung auf Datenbankebene und nicht einfach ein Benutzeroberflächenblock.
unique_for_date DateField Sie den Wert auf DateField oder DateTimeField . Wenn doppelte Werte für dasselbe Datum oder Datum vorhanden sind, werden Fehler DateTimeField .
unique_for_month Ähnlich wie unique_for_date , außer dass die Prüfungen für den Monat begrenzt sind.
unique_for_year Ähnlich wie unique_for_date , außer dass die Prüfungen auf das Jahr beschränkt sind.
verbose_name Ein benutzerfreundlicher Name für das Feld, der von Django an verschiedenen Stellen verwendet wird (z. B. Erstellen von Labels in den Administrator- und Modellformularen).
Validatoren Eine Liste von Validatoren für dieses Feld.

Bemerkungen

  • Sie können Ihre eigenen Felder schreiben, wenn Sie es für nötig halten
  • Sie können Funktionen der Basismodellklasse überschreiben, am häufigsten die Funktion save()

Anzahl Felder

Beispiele für numerische Felder sind angegeben:

AutoField

Eine automatisch inkrementierende Ganzzahl, die im Allgemeinen für Primärschlüssel verwendet wird.

from django.db import models

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

Jedes Modell erhält standardmäßig ein Primärschlüsselfeld ( id ). Daher ist es nicht erforderlich, ein ID-Feld im Modell für die Zwecke eines Primärschlüssels zu duplizieren.


BigIntegerField

Eine ganzzahlige Zahl von -9223372036854775808 bis 9223372036854775807 ( 8 Bytes ).

from django.db import models

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

IntegerField

Das IntegerField wird verwendet, um ganzzahlige Werte von -2147483648 bis 2147483647 ( 4 Bytes ) zu speichern.

from django.db import models

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

default ist nicht obligatorisch. Es ist jedoch nützlich, einen Standardwert festzulegen.


PositiveIntegerField

Wie ein IntegerField, muss aber entweder positiv oder null (0) sein. Das PositiveIntegerField wird zum Speichern von Integerwerten von 0 bis 2147483647 ( 4 Bytes ) verwendet. Dies kann bei Feldern hilfreich sein, die semantisch positiv sein sollten. Wenn Sie beispielsweise Nahrungsmittel mit ihren Kalorien aufnehmen, sollte dies nicht negativ sein. Dieses Feld verhindert negative Werte durch seine Validierungen.

from django.db import models

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

default ist nicht obligatorisch. Es ist jedoch nützlich, einen Standardwert festzulegen.


SmallIntegerField

Das SmallIntegerField wird verwendet, um ganzzahlige Werte von -32768 bis 32767 ( 2 Bytes ) zu speichern. Dieses Feld ist nützlich für Werte, die keine Extremwerte sind.

from django.db import models

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

PositiveSmallIntegerField

Das SmallIntegerField wird verwendet, um ganzzahlige Werte von 0 bis 32767 ( 2 Bytes ) zu speichern. Genau wie SmallIntegerField ist dieses Feld für Werte hilfreich, die nicht so hoch gehen, und sollte semantisch positiv sein. Beispielsweise kann es ein Alter speichern, das nicht negativ sein kann.

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)

Neben PositiveSmallIntegerField ist dies für die Auswahl auch der Djangoic-Weg, Enum zu implementieren:

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

Die Definition der Auswahlmöglichkeiten als Klassenvariablen oder Modulvariablen entsprechend der Situation ist eine gute Möglichkeit, sie zu verwenden. Wenn Auswahlfelder ohne Anzeigenamen übergeben werden, führt dies zu Verwirrung.


Dezimalfeld

Eine Dezimalzahl mit fester Genauigkeit, die in Python durch eine Dezimal-Instanz dargestellt wird. Im Gegensatz zu IntegerField und seinen Ableitungen hat dieses Feld 2 erforderliche Argumente:

  1. DecimalField.max_digits : Die maximal zulässige Anzahl von Ziffern in der Anzahl. Beachten Sie, dass diese Anzahl größer oder gleich decimal_places sein muss.
  2. DecimalField.decimal_places : Die Anzahl der Dezimalstellen, die mit der Anzahl gespeichert werden sollen.

Wenn Sie Zahlen mit bis zu 99 Nachkommastellen speichern möchten, müssen Sie max_digits=5 und decimal_places=3 :

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

BinaryField

Dies ist ein spezielles Feld, in dem binäre Daten gespeichert werden. Es akzeptiert nur Bytes . Die Daten werden bei der Speicherung base64 serialisiert.

Da dies binäre Daten speichert, kann dieses Feld nicht in einem Filter verwendet werden.

from django.db import models

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

CharField

Das CharField wird zum Speichern definierter Textlängen verwendet. In dem folgenden Beispiel können bis zu 128 Zeichen Text in dem Feld gespeichert werden. Wenn Sie eine längere Zeichenfolge eingeben, wird ein Validierungsfehler ausgelöst.

from django.db import models

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

DateTimeField

DateTimeField wird zum Speichern von Datumszeitwerten verwendet.

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)

Ein DateTimeField hat zwei optionale Parameter:

  • auto_now_add setzt den Wert des Feldes auf die aktuelle Datumszeit, wenn das Objekt erstellt wird.

  • auto_now setzt den Wert des Felds bei jeder Speicherung des Felds auf die aktuelle Datumszeit.

Diese Optionen und der default sich gegenseitig aus.

Unbekannter Schlüssel

Das Feld ForeignKey dient zum Erstellen einer many-to-one Beziehung zwischen Modellen. Nicht wie bei den meisten anderen Feldern sind Positionsargumente erforderlich. Das folgende Beispiel zeigt die Beziehung zwischen Auto und Besitzer:

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)

Das erste Argument des Feldes ist die Klasse, auf die sich das Modell bezieht. Das zweite Positionsargument ist on_delete Argument on_delete . In den aktuellen Versionen ist dieses Argument nicht erforderlich, aber in Django 2.0 erforderlich. Die Standardfunktionalität des Arguments wird wie folgt angezeigt:

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

Dies bewirkt, dass Car-Objekte aus dem Modell gelöscht werden, wenn ihr Besitzer aus dem Personenmodell gelöscht wird. Dies ist die Standardfunktionalität.

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

Dadurch wird verhindert, dass Personenobjekte gelöscht werden, wenn sie mit mindestens einem Car-Objekt verknüpft sind. Alle Car-Objekte, die auf ein Personenobjekt verweisen, sollten zuerst gelöscht werden. Und dann kann das Personenobjekt gelöscht werden.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow