Django - Dynamische Modelle

Inhaltsverzeichnis
In Django Klassen sind Objekte Python, Wie bei jedem anderen Objekt können wir zum Zeitpunkt der Programmausführung viele interessante Effekte erzielen, da wir alle Python-Funktionen und -Methoden verfügbar in Django können wir Klassen bauen, die dynamische Klassen generieren können.
Das Erstellen einer dynamischen Klasse kann uns einige Vorteile bieten, z. B. das Erstellen eines Modells aus einer Klasse, wodurch neue Funktionalitäten generiert werden.
Wie funktionieren Klassen im Framework?
Um an den Punkt zu gelangen, dynamische Modelle zu generieren, müssen wir zunächst sicherstellen, dass wir verstehen, wie Klassen in Python funktionieren.
Wir wissen, dass die Klassen in Python sind Objekte, die zur Laufzeit mit dem internen Konstruktor erstellt werden können Typ () und Erhalt der Details, wie sie definiert werden sollten.
Models in Django
Da wir wissen, wie Klassen in Python funktionieren, müssen wir betonen, dass die Modelle in Django sie sind Standard-Python-Klassen, nur werden sie so deklariert, dass Django Sie sie verwenden können und dass es sich um Standardklassen handelt, ermöglicht es uns, Modelle zur Laufzeit zu generieren.
Erste Implementierung
Sehen wir uns das folgende Bild mit einem kleinen Code an:

Hier sehen wir, wie die Django-Framework Wir importieren das Modell-Modul, dann erstellen wir eine Methode zum Erstellen der Modelle mit dem Konstruktortyp () die wir im vorherigen Punkt des Tutorials erwähnt hatten.
Dieser vereinfachte Ansatz, den wir angewendet haben, wird jedoch offensichtlich nicht funktionieren, das Problem besteht darin, dass Django erwartet, dass ein Wörterbuch ein Modul mit seinem Code enthält.
Sehen wir uns nun einen Code an, mit dem wir dieses Problem lösen:
 def create_model (name, module_path): Rückgabetyp (name, (models.Model,), {'__module__': module_path}) 

Mit dieser Implementierung haben wir den ersten Fehler beseitigt, der beim ersten Beispiel aufgetreten ist.
Konfigurationsoptionen hinzufügen
Wir werden unseren Code zum Generieren dynamischer Modelle vervollständigen, einschließlich der Möglichkeit, dass wir die Optionen von django-Konfiguration, dafür verwenden wir die Meta-Klasse und wir werden seine Operation überschreiben, damit wir mit unserer neuen Implementierung die Art und Weise, wie wir mit den Optionen umgehen, neu definieren können. Sehen wir uns in der folgenden Abbildung den bereits abgeschlossenen Code an, um dies zu erreichen:

In diesem Code haben wir einige Aspekte unseres ursprünglichen Codes deutlich geändert. Wir beginnen mit der Definition, dass der Pfad des Moduls wie folgt lautet: Django.db.models, von hier aus erhalten wir die anfänglichen Definitionen, sobald dies geschieht, erstellen wir ein Wörterbuch, in dem wir es zuweisen __Modul__ der Wert des Pfades, den wir definiert haben.
Dann überarbeiten wir die Meta-Klasse, damit speichern wir die möglichen Probleme, die wir zu Beginn dieses Punktes besprochen hatten, endlich können wir unsere aufrufen type() Methode, Übergeben der erforderlichen Daten und nicht Fehler.
Mit diesem neuen Wissen, das wir generiert haben, haben wir bereits eine solide Basis, mit der wir mit dem Code von . interagieren können Django auf sicherere Weise, was uns in eine vorteilhafte Position für die Entwicklung unserer Anwendungen und die dynamische Generierung von Modellen in der Ausführungszeit unseres Programms bringt.Hat dir dieses Tutorial gefallen und geholfen?Sie können den Autor belohnen, indem Sie diesen Knopf drücken, um ihm einen positiven Punkt zu geben

Sie werden die Entwicklung der Website helfen, die Seite mit Ihren Freunden teilen

wave wave wave wave wave