Feldtypen (Feldtypen)
AutoField
Es handelt sich um ein IntegerField-Feld, das basierend auf der ID automatisch wächst. Normalerweise müssen Sie dieses Feld nicht direkt verwenden. Wenn Sie in einem anderen Feld keinen Primärschlüssel angeben, Django Das Primärschlüsselfeld wird automatisch hinzugefügt.
BigIntegerField
64-Bit-Ganzzahl, ähnlich wie IntegerField, im Bereich von -9223372036854775808 An 9223372036854775807. Das Standardformular-Widget ist TextInput.
BooleanField
Ein boolesches Wertfeld (wahr/falsch).
Das Standardformular-Widget ist CheckboxInput.
Wenn Sie null als leeren Wert verwenden möchten, können Sie NullBooleanField verwenden.
CharField
class CharField(max_length=None[, **options])
Es ist ein String-Feld, das sowohl für kleine als auch große Strings geeignet ist.
Für größeren Text sollte TextField verwendet werden.
Das Standardformular-Widget ist TextInput.
CharField hat einen Parameter, der übergeben werden muss: max_length, die maximale Anzahl von Zeichen im Feld. Es funktioniert sowohl auf Datenbankebene als auch auf der Datenvalidierungsebene von Django.
CommaSeparatedInterField
class CommaSeparatedIntegerField(max_length=None[, **Optionen])
Wird zum Speichern einer durch Kommas getrennten Folge von Ganzzahlen verwendet. Wie CharField muss es mit dem Parameter max_length versehen werden. Beachten Sie auch, dass verschiedene Datenbanken unterschiedliche max_length haben Einschränkungen.
DateField
class DateField([auto_now=False, auto_now_add=False, **Optionen])
Dieses Feld verwendet Pythons datetime.date-Instanz, um das Datum darzustellen. Hier sind die zusätzlichen optionalen Parameter:
DateField.auto_now: Jedes Mal, wenn das Objekt gespeichert wird, setzt Django den Wert dieses Felds automatisch auf die aktuelle Zeit. Im Allgemeinen bedeutet dies „zuletzt geändert“ Zeit. Bitte beachten Sie, dass das aktuelle Datum verwendet wird, nicht der Standardwert, sodass
die Speicherzeit nicht durch Überschreiben des Standardwerts ändern kann.
DateField.auto_now_add: Wenn das Objekt zum ersten Mal erstellt wird, Django Setzt den Wert dieses Felds automatisch auf die aktuelle Zeit, die im Allgemeinen zur Darstellung der Objekterstellungszeit verwendet wird. Außerdem wird das aktuelle Datum anstelle des Standardwerts verwendet.
Das Standardformular-Widget ist TextInput.
Hinweis: Wenn auto_now oder auto_now_add auf True gesetzt ist, hat das Feld die Einstellungen editable=True und blank=True.
DateTimeField
class DateTimeField([auto_now=False, auto_now_add=False, **options])
Dieses Feld verwendet datetime.datetime-Instanzen, um Datum und Uhrzeit darzustellen. Dieses Feld akzeptiert die gleichen Parameter wie DateField.
Das Standardformular-Widget ist TextInput. Der Django-Administrator verwendet zwei TextInputs mit JavaScript-Verknüpfungsoptionen, um Datum bzw. Uhrzeit darzustellen.
DecimalField
class DecimalField(max_digits=None, decimal_places=None[, **Optionen])
Es handelt sich um ein Feld, das eine Decimal-Instanz verwendet, um eine Dezimalzahl mit fester Genauigkeit darzustellen. Es verfügt über zwei erforderliche Parameter:
DecimalField.max_digits: die maximal zulässige Anzahl von Ziffern für eine Zahl
DecimalField.decimal_places: die maximale Anzahl von Ziffern für eine Dezimalzahl
For Zum Speichern beträgt der maximale Wert einer Zahl beispielsweise 999. Mit zwei Dezimalstellen können Sie Folgendes verwenden:
models.DecimalField(..., max_digits=5, decimal_places=2)
Um eine Zahl in der Größenordnung einer Milliarde mit 10 Dezimalstellen zu speichern, schreiben Sie einfach:
models.DecimalField(..., max_digits=19, decimal_places=10)
Das Standard-Formular-Widget ist TextInput.
EmailField
Klasse EmailField([max_length=75, **Optionen])
Es ist ein CharField mit E-Mail-Gültigkeitserkennung.
Hinweis: Die maximale Länge beträgt standardmäßig 75 und es können nicht alle mit RFC3696/5321 kompatiblen E-Mail-Adressen gespeichert werden. Wenn Sie alles speichern möchten, legen Sie
max_length=254 fest. Die Einstellung auf 75 ist ein Legacy-Problem.
FileField
class FileField(upload_to=None[, max_length=100, **options])
Datei-Upload-Feld
Hinweis: Dieses Feld funktioniert Unterstützt PRimary_key und eindeutige Parameter nicht, andernfalls wird ein TypeError ausgelöst abnormal.
Es gibt einen erforderlichen Parameter:
FileField.upload_to
Das lokale Dateisystem, das zum Speichern der Datei verwendet wird. Es bestimmt das URL-Attribut der Datei basierend auf der MEDIA_ROOT-Einstellung.
Der Pfad kann die Zeitformatzeichenfolge strftime() enthalten, die beim Hochladen von Dateien durch das aktuelle Datum/die aktuelle Uhrzeit ersetzt werden kann (auf diese Weise wird beim Hochladen von Dateien kein Verzeichnis gefüllt).
Dieser Parameter kann auch ein aufrufbares Element sein, beispielsweise eine Funktion. Sie können die Funktion aufrufen, um den Upload-Pfad mit dem Dateinamen zu erhalten. Dieses aufrufbare Element muss zwei Argumente akzeptieren:
und einen Pfad im Unix-Stil (mit /-Schrägstrichen) zurückgeben, um die Datei zu speichern. Die beiden Parameter sind:
Instanz: Definiert die Modellinstanz des aktuellen FileField. Genauer gesagt handelt es sich um die Modellinstanz mit dieser Datei als Anhang.
In den meisten Fällen wird beim Speichern der Datei das Modell angezeigt Das Instanzobjekt wurde noch nicht in der Datenbank gespeichert, da es höchstwahrscheinlich das Standard-AutoField verwendet und den Primärschlüsselwert noch nicht von der Datenbank erhalten hat.
Dateiname: Der ursprüngliche Name der hochgeladenen Datei. Es kann beim Generieren des endgültigen Pfads verwendet werden.
Es gibt auch einen optionalen Parameter:
FileField.storage
Das Objekt, das für das Speichern und Abrufen von Dateien verantwortlich ist.
Das Standardformular-Widget ist FileInput.
Hinweis: Um FileField oder ImageField im Modell zu verwenden, führen Sie die folgenden Schritte aus:
1 In der Projekteinstellungsdatei müssen Sie MEDIA_ROOT definieren und den zum Speichern zu verwendenden Wert festlegen uploads Der vollständige Pfad zum Verzeichnis der Datei. (Django speichert aus Leistungsgründen keine Dateien in der Datenbank.)
Definieren Sie dann MEDIA_URL und setzen Sie seinen Wert auf die URL, die das Verzeichnis darstellt.
Stellen Sie sicher, dass das vom Webserver verwendete Konto über Schreibberechtigungen für das Verzeichnis verfügt.
2. Fügen Sie FileField oder ImageField im Modell hinzu und bestätigen Sie, dass das Element upload_to definiert wurde, um Django zuzulassen Wissen Sie, welches Unterverzeichnis von
MEDIA_ROOT zum Speichern von Dateien verwendet werden soll.
3. In der Datenbank wird nur der Pfad der Datei gespeichert (und es ist ein relativer Pfad relativ zu MEDIA_ROOT). Möglicherweise haben Sie darüber nachgedacht, das praktische URL-Attribut von Django zu nutzen. Wenn Ihr ImageField-Name beispielsweise Mug_shot lautet, können Sie
{{ object.mug_shot.url }}
in der Vorlage
verwenden vollständige URL des Bildes.
Angenommen, Ihr MEDIA_ROOT ist auf „/home/media“ und upload_to auf eingestellt 'Fotos/%Y/%m/%d'. '%Y/%m/%d' von
in upload_to ist ein strftime(), '%Y' ist ein vierstelliges Jahr, '%m' ist ein zweistelliger Monat, '%d ' ist Days für euch beide. Wenn Sie
am 15. Januar 2007 eine Datei hochgeladen haben, wird die Datei im Verzeichnis /home/media/photos/2007/01/15 gespeichert.
Wenn Sie den lokalen Dateinamen, die Datei-URL oder die Dateigröße der hochgeladenen Datei erhalten möchten, können Sie die Attribute Name, URL und Größe verwenden.
Hinweis: Achten Sie beim Hochladen von Dateien auf den Speicherort und die Art der gespeicherten Dateien. Der Grund dafür ist die Vermeidung von Sicherheitslücken. Jede hochgeladene
-Datei muss überprüft werden, damit Sie sicherstellen können, dass es sich bei der hochgeladenen Datei um die gewünschte Datei handelt. Wenn Sie zum Beispiel andere blind Dateien hochladen lassen, ohne
die hochgeladenen Dateien zu überprüfen, wenn sich das Verzeichnis, in dem die Dateien gespeichert sind, im Stammverzeichnis des Webservers befindet, wenn jemand ein CGI oder PHP hochlädt
-Skript und das anschließende Ausführen des hochgeladenen Skripts durch Zugriff auf die Skript-URL ist zu gefährlich. Lass das nicht passieren!
Standardmäßig ist die entsprechende Spalte der FileField-Instanz in der Datenbank varchar(100). Sie können max_length verwenden Parameter ändert die maximale Länge des Feldes.
FileField und FieldFile
Klasse FieldFile
Wenn Sie auf das FileField
-Feld eines Modells zugreifen, erhalten Sie eine Instanz von FieldFile als Proxy für Zugriff auf das zugrunde liegende Dokument. Instanzen verfügen über mehrere Eigenschaften und Methoden, die zur Interaktion mit Dateidaten verwendet werden können.
FieldFile.url
Rufen Sie die url()-Methode der zugrunde liegenden Speicherklasse schreibgeschützt auf, um auf die relative URL der Datei zuzugreifen.
FieldFile.open(mode='rb')
Ähnlich der open()-Methode von Python.
FieldFile.close()
Ähnlich der close()-Methode von Python.
FieldFile.save(name,content,save=True)
Diese Methode übergibt den Dateinamen und den Dateiinhalt an das Feld und speichert sie dann im Modell. Diese Methode erfordert zwei notwendige Parameter: Name, Name der Datei, Inhalt, Ein Objekt, das den Inhalt einer Datei enthält. Der Speicherparameter ist optional und steuert hauptsächlich
, ob die Instanz gespeichert wird, nachdem die Datei geändert wurde. Der Standardwert ist True . Es ist zu beachten, dass der Inhaltsparameter django.core.files.File ist Eine Instanz von , die nicht das in Python integrierte File-Objekt ist. Mit
können Sie wie folgt eine Datei aus einem vorhandenen Python-Dateiobjekt erstellen:
from django.core.files import File
# Öffnen Sie eine vorhandene Datei mit der integrierten Python-Funktion open()f = open('/tmp/hello.world')
myfile = File(f)
oder aus einer Zeichenfolge erstellt:
from django.core.files.base import ContentFile
myfile = ContentFile("hello world")
FieldFile.delete(save=True)
Löschen Sie die damit verbundene Datei Instanz und löscht alle Attribute für dieses Feld.
Hinweis: Wenn delete() aufgerufen wird und die Datei geöffnet ist, wird diese Methode die Datei schließen.
Der Speicherparameter ist optional und steuert, ob die Instanz gespeichert wird, nachdem die Datei gelöscht wurde. Der Standardwert ist True .
Es ist zu beachten, dass beim Löschen eines Modells die zugehörigen Dateien nicht gelöscht werden. Wenn Sie diese verwaisten Dateien löschen möchten, müssen Sie sich selbst darum kümmern (Sie können beispielsweise den Bereinigungsbefehl manuell ausführen oder den Bereinigungsbefehl regelmäßig über cron ausführen)
FilePathField
class FilePathField(path=None [, match=None, recursive=False, max_length=100, **Optionen])
Es handelt sich um ein CharField, das zur Auswahl bestimmter Dateien in einem Verzeichnis unter dem Dateisystem verwendet wird. Es verfügt über drei proprietäre Parameter, nur der erste Parameter
ist erforderlich:
FilePathField.path
Dieser Parameter ist erforderlich. Es ist der absolute Pfad zu dem Verzeichnis, das FilePathField zum Auswählen der Datei verwendet. Zum Beispiel: „/home/images“.
FilePathField.match
Optionale Parameter. Es handelt sich um eine reguläre Ausdruckszeichenfolge, die FilePathField zum Filtern von Dateinamen verwendet. In der Dateiauswahlliste
werden nur Dateien angezeigt, die die Kriterien erfüllen. Beachten Sie, dass der reguläre Ausdruck nur Dateinamen und keine Dateipfade abgleicht. Beispiel: „foo.*.txt$“ stimmt nur mit
foo23.txt überein, nicht jedoch mit bar.txt und foo23.gif.
FilePathField.recursive
Optionaler Parameter. Sein Wert ist wahr oder falsch. Der Standardwert ist False. Es gibt an, ob Unterverzeichnisse unter „Pfad“ eingeschlossen werden sollen.
FilePathField.allow_files
Dieses Element ist eine neue Ergänzung zu Django 1.5. Optionaler Parameter, dessen Wert True oder False ist. Der Standardwert ist WAHR. Es gibt an, ob die Datei am angegebenen Speicherort eingefügt werden soll. Eines dieser Elemente und „allow_folders“ muss „True“ sein.
FilePathField.allow_folders
Neue Inhalte in Django 1.5. Optionaler Parameter, sein Wert ist True oder False. Der Standardwert ist False. Es gibt an, ob das Verzeichnis am angegebenen Speicherort eingefügt werden soll. Eines dieser Elemente und „allow_files“ müssen sein WAHR.
Wie bereits erwähnt, stimmt die Übereinstimmung nur mit Dateinamen überein, nicht mit Dateipfaden. Das folgende Beispiel:
FilePathField(path="/home/images", match="foo.*", recursive=True)
entspricht /home/images/ foo.gif anstelle von /home/images/foo/bar.gif. Dies liegt daran, dass match nur Dateinamen abgleicht
(foo.gif und bar.gif).
Standardmäßig ist die entsprechende Spalte einer FilePathField-Instanz in der Datenbank varchar(100). Wie andere Felder können Sie max_length verwenden Parameter ändert die maximale Länge des Feldes.
FloatField
class FloatField([**options])
Dieses Feld verwendet eine Float-Instanz in Python, um eine Gleitkommazahl darzustellen.
Das Standardformular-Widget ist TextInput.
Bitte beachten Sie den Unterschied zwischen FloatField und DecimalField.
ImageField
class ImageField(upload_to=None[, height_field=None, width_field=None, max_length=100,**Optionen])
Wie FileField, außer dass überprüft wird, ob es sich bei dem hochgeladenen Objekt um eine legale Bilddatei handelt.
Zusätzlich zu den in FileField gültigen Parametern kann ImageField auch die beiden Eigenschaften File.height und File.width verwenden .
Es verfügt über zwei optionale Parameter:
ImageField.height_field
Der Name des Feldes, das die Höhe des Bildes enthält. Beim Speichern des Objekts wird die Bilddatei basierend auf der in diesem Feld eingestellten Höhe skaliert und konvertiert.
ImageField.width_field
Der Name des Feldes, das die Breite des Bildes speichert. Beim Speichern des Objekts wird die Bilddatei entsprechend der in diesem Feld eingestellten Breite skaliert und konvertiert.
Standardmäßig entsprechen ImageField-Instanzen varchar(100) in der Datenbank Liste. Wie bei anderen Feldern können Sie die maximale Länge des Felds mithilfe des Parameters max_length ändern.
IntegerField
class IntegerField([**options])
Integer-Feld. Das Standardformular-Widget ist TextInput.
IPAddressField
class IPAddressField([**options])
Stellt das IP-Adressfeld in Zeichenfolgenform dar (z. B. „192.0.2.30“). Das Standardformular-Widget ist TextInput.
GenericIPAddressField
Klasse GenericIPAddressField([**options])
Neu in Django1.4.
Stellt das IP4- oder IP6-Adressfeld in Zeichenfolgenform dar (z. B. „192.0.2.30“ oder „2a02:42fe::4“). Standardformular Das Widget ist TextInput.
Das IPv6-Adressformat folgt dem Abschnitt RFC 4291 2.2. Wenn es sich bei dieser Adresse beispielsweise tatsächlich um eine IPv4-Adresse handelt, können die letzten 32 Bits durch Dezimalzahlen dargestellt werden, beispielsweise „::ffff:192.0.2.0“.
2001:0::0:01 kann als 2001::1 geschrieben werden, und ::ffff:0a0a:0a0a kann als::ffff:10.10.10.10 geschrieben werden. Die Buchstaben sind alle kleingeschrieben.
GenericIPAddressField.protocol
Überprüft die Gültigkeit des Eingabeprotokolls. Der Standardwert ist „both“, also IPv4 oder IPv6. Bei diesem Eintrag wird die Groß-/Kleinschreibung nicht beachtet.
GenericIPAddressField.unpack_ipv4
Erklärt die IPv4-zugeordnete Adresse, etwa ::ffff:192.0.2.1 . Wenn diese Option aktiviert ist, wird die Adresse als 192.0.2.1 interpretiert. Die Standardeinstellung ist deaktiviert. nur wenn Kann nur aktiviert werden, wenn das Protokoll auf „Beide“ eingestellt ist.
NullBooleanField
Klasse NullBooleanField([**options])
Ähnlich wie BooleanField, aber mit einer zusätzlichen NULL-Option. Es wird empfohlen, dieses Feld anstelle eines BooleanField mit der Option null=True zu verwenden.
Das Standardformular-Widget ist NullBooleanSelect.
PositiveIntegerField
class PositiveIntegerField([**options])
Ähnlich wie IntegerField, aber der Feldwert muss eine nicht negative Zahl sein.
PositiveSmallIntegerField
Klasse PositiveSmallIntegerField([**options])
ähnelt PositiveIntegerField, aber der Wertebereich ist kleiner und durch Datenbankeinstellungen begrenzt.
SlugField
class SlugField([max_length=50, **options])
Slug ist ein Nachrichtenbegriff, der sich auf eine Kurzbezeichnung für ein Ereignis bezieht. Es darf nur aus Buchstaben, Zahlen, Unterstrichen oder Bindestrichen bestehen. Im Allgemeinen wird es als Teil der URL verwendet.
Ähnlich wie bei CharField können Sie max_length angeben (beachten Sie die Datenbankkompatibilität und die in diesem Abschnitt erwähnte max_length). falls nicht angegeben max_length, Django setzt die Feldlänge standardmäßig auf 50.
Dieses Feld setzt Field.db_index automatisch auf True.
Es ist nützlich, Slug-Felder basierend auf den Werten anderer Felder automatisch zu füllen. Sie können prepopulated_fields im Django-Administrator verwenden um dies zu tun.
SmallIntegerField
Klasse SmallIntegerField([**options])
ähnelt IntegerField, aber der Wertebereich ist kleiner und durch Datenbankbeschränkungen begrenzt.
TextField
class TextField([**options])
Großes Textfeld. Das Standardformular-Widget ist Textarea.
TimeField
class TimeField([auto_now=False, auto_now_add=False, **Optionen])
Dieses Feld verwendet Pythons datetime.time-Instanz, um die Zeit darzustellen. Es akzeptiert die gleichen Autovervollständigungsparameter wie DateField.
Das Standardformular-Widget ist TextInput.
URLField
class URLField([max_length=200, **options])
CharField, das die URL speichert.
Wie alle CharField-Unterklassen akzeptiert URLField einen optionalen max_length-Parameter, der standardmäßig 200 ist.
Das Obige ist der Inhalt des Django-Dokuments – Modellfeldtyp (FieldTypes). Weitere verwandte Artikel finden Sie auf der chinesischen PHP-Website (www.php.cn).