Inhaltsverzeichnis
Sobald das Modell und alles, was damit zusammenhängt, eingerichtet ist, ist der nächste zu berücksichtigende Aspekt, wie die verschiedenen Felder mit der Datenbank interagieren.Wenn wir über das Verhalten der Datenbank sprechen, beziehen wir uns auf die Art und Weise, in der wir sehen müssen, wie die Daten für die Speicherung vorbereitet werden, die Art und Weise, wie wir Vergleiche mit den Datentypen von Python mit denen ihre Werte in unserer Anwendung dargestellt werden in Django.
db_type (selbst, Verbindung)
Diese Methode wird selten von Anwendungsklassen und Unterklassen überschrieben, sie gibt eine Zeichenfolge mit bestimmten Datenbankdaten zurück, die steuert, wie die Spalten bestimmter Felder erstellt werden.
Es ist wichtig zu erwähnen, dass der mit dieser Methode zurückgegebene Wert speziell für die Backend Datenbank, die in der Anwendung verwendet wird. Wenn wir uns also entscheiden, sie in Projekten mit verschiedenen Datenbank-Backends zu verwenden, müssen wir den Wert der Verbindung mithilfe von . ermitteln connection.settings_dict ['ENGINE']
Sehen wir uns im folgenden Bild an, wie wir die grundlegende Verwendung dieser Methode in Code übersetzen können:
get_prep_value (selbst, Wert)
Dies ist eine Methode, die als Grundlage für andere Methoden dient, die die Daten für die Verwendung durch die Datenbank aufbereiten müssen.
In den meisten Fällen ist die Umrechnung von Python-Objekte auf einfachere Daten, die in die Datenbank übertragen werden können, stellt kein großes Problem dar und wir können die Standardkonvertierung verwenden, wenn wir jedoch komplexere Konvertierungen wie einen Datumstyp vornehmen möchten, können wir diese Methode verwenden, um diese Arbeit zu erledigen. in der folgenden Grafik haben wir einen von uns beschriebenen Weg, um dies zu erreichen.
get_db_prep_value (self, value, connection, Prepared = False)
Es gibt Fälle, in denen unsere Anwendung in mehr als einer Datenbank-Engine läuft, denn diese Methode ermöglicht es uns, die Daten basierend auf der Engine vorzubereiten, dank der connection.settings_dict ['ENGINE'] je nach Motor können wir verschiedene Fälle einbauen.
Ein Beispiel ist, wenn wir mit postgreSQL arbeiten, kann diese Engine die Datumsobjekte direkt verarbeiten. Wenn wir also feststellen, dass es so ist, können wir den Wert direkt übergeben. Sehen wir uns im folgenden Beispiel an, wie wir diese Methode und die vorherige zu kombinieren ein robusteres Ergebnis erzielen: