Leser wie Sie helfen, MUO zu unterstützen. Wenn Sie über Links auf unserer Website einen Kauf tätigen, erhalten wir möglicherweise eine Affiliate-Provision.

Eine Datenbankbeziehung beschreibt die Verbindung zwischen verschiedenen Datenbanktabellen. Die Beziehungen bestimmen, wie Daten gespeichert und abgerufen werden. Django funktioniert gut mit relationalen Datenbanksystemen (RDBMS). Es unterstützt daher Datenbanktabellenbeziehungen.

Die Arten von Beziehungen hängen von den Anforderungen Ihrer Anwendung und den Daten ab, die sie modelliert. Gute Beziehungen zwischen Django-Modellen und der Datenbank verbessern die Datenpflege. Dazu gehört die Verbesserung der Abfrageleistung und die Reduzierung der Datenduplizierung.

Sie können lernen, wie sich Django-Datenbankbeziehungen auf die Anwendungsleistung auswirken, indem Sie die drei Haupttypen von Beziehungen untersuchen.

Datenbankbeziehungen

Relationale Datenbanksysteme unterstützen drei Arten von Datenbankbeziehungen. Diese Beziehungen sind Eins-zu-Viele, Viele-zu-Viele und Eins-zu-Eins. Die Art der Datenbankbeziehung wirkt sich auf die Anwendungsfälle Ihrer Anwendung aus.

instagram viewer

Django-Modelle stellen Datenbanktabellen in der App dar. Sie müssen gute Beziehungen zwischen Tabellen erstellen, um ein gutes Datenbanksystem zu erstellen. Datenbankbeziehungen bestimmen, wie Daten in Ihrer Anwendung gespeichert und dargestellt werden.

Um Datenbankbeziehungen zu verstehen, beginnen Sie mit Erstellen eines Django-Projekts genannt Hauben. Die App wird ein soziales Netzwerk für die Nachbarschaft sein. Es wird die sozialen Aktivitäten, die Sicherheit und die Geschäfte verschiedener Stadtteile verwalten.

Einwohner können sich registrieren, anmelden und Profile erstellen. Sie können auch Beiträge und Geschäftsanzeigen erstellen, die jeder sehen kann.

Erstellen Sie zunächst eine Datenbank, in der alle Nachbarschaftsdaten gespeichert werden. Anschließend erstellen Sie die Modelle Profile, NeighborHood, Business und Post. Um die Modelle zu erstellen, müssen Sie die Beziehung bestimmen, die die Datenbanktabellen benötigen.

Eins-zu-Eins-Datenbankbeziehung

Eine Eins-zu-Eins-Beziehung impliziert, dass sich ein Datensatz in einem Django-Modell auf einen anderen Datensatz in einem anderen Modell bezieht. Die beiden Datensätze hängen voneinander ab. In diesem Fall ist die Profilmodell abhängig von der Benutzermodell Bewohnerprofile zu erstellen.

Es kann also nur ein Profil für jeden in der App registrierten Bewohner geben. Außerdem kann ein Profil ohne einen Benutzer nicht existieren.

aus django.db importieren Modelle
ausDjango.Beitrag.auth.ModelleimportierenBenutzer

KlasseProfil(Modelle. Modell):
Benutzer = Modelle. OneToOneField (Benutzer, on_delete=models. CASCADE, related_name='Profil')
Name = Modelle. CharField (max_länge=80, leer =WAHR)
bio = Modelle. Textfeld (max_länge=254, leer =WAHR)
profile_picture = CloudinaryField('Profilbild', Standard='default.png')
Ort = Modelle. CharField (max_länge=50, leer =WAHR, Null=WAHR)
E-Mail = Modelle. E-Mail-Feld (Null=WAHR)

def__str__(selbst):
zurückkehren F'{selbst.user.username} Profil'

Das Benutzermodell von Django ist ein integriertes Authentifizierungsmodell in Django. Sie müssen dafür kein Modell erstellen. Importieren Sie es stattdessen aus django.contrib.auth. Der OneToOneField() auf der Profilmodell definiert eine Eins-zu-Eins-Beziehung.

Der on_delete=Modelle. KASKADE Argument verhindert das Löschen eines dieser Datensätze. Sie müssen die Datensätze aus beiden Tabellen löschen.

Sie können die Django-Admin-Oberfläche verwenden, um die Beziehung in Ihrer App zu visualisieren. Um sich bei Django Admin anzumelden, müssen Sie sich als Admin-Benutzer namens a registrieren Superuser.

Erstellen Sie einen Superuser, indem Sie den folgenden Befehl auf dem Terminal ausführen:

Pythonverwalten.pyerstelltSuperuser

Sie werden aufgefordert, Ihren Benutzernamen, Ihre E-Mail-Adresse und Ihr Passwort einzugeben. Sobald Sie dies getan haben, starten Sie den Server.

Öffnen Sie die Admin-Seite in einem Browser über die URL http://127.0.0.1:8000/admin.

Sie sehen die Admin-Seite, auf der Sie sich mit den zuvor erstellten Anmeldeinformationen anmelden können. Sobald Sie angemeldet sind, sehen Sie die Gruppen Und Benutzer Objekte. Das Django-Authentifizierungsframework verwaltet diese beiden Modelle. Unten sehen Sie die Profilmodell.

Öffne das Profil Modell und fügen Sie ein Profil hinzu. Sie werden sehen, dass es wie folgt aussieht:

Beachten Sie, dass Sie die Möglichkeit haben, ein Profil für einen Benutzer zu erstellen. Mit dem Datentyp OneToOneField() können Sie Profile für authentifizierte Benutzer erstellen. Auf diese Weise verwaltet die App Eins-zu-eins-Beziehungen.

Eins-zu-Viele-Beziehungen

Eine 1:n-Beziehung impliziert, dass ein Datensatz in einem Modell vielen Datensätzen in einem anderen Modell zugeordnet ist. Es wird auch als Viele-zu-Eins-Beziehung bezeichnet.

In Ihrem Fall kann ein Administrator mehrere Nachbarschaften erstellen. Aber jede Nachbarschaft kann nur einem Administrator gehören. Sie können den Datentyp ForeignKey verwenden, um eine solche Beziehung zu definieren.

Django hat eine eingebaute Admin-Oberfläche. Sie müssen dafür kein Modell erstellen. Der Administrator hat das Recht, Inhalte zu verwalten und die App über das Admin-Panel zu visualisieren.

Das Modell, das viele Datensätze aufnehmen kann, wird die haben Unbekannter Schlüssel. Es definiert die Beziehung als Eins-zu-Viele. Der folgende Code zeigt, wo der Schlüssel platziert werden muss.

KlasseNachbarschaft(Modelle. Modell):
admin = Modelle. Unbekannter Schlüssel("Profil", on_delete=Modelle. CASCADE, related_name='Haube')
Name = Modelle. Zeichenfeld (max_length=50)
Ort = Modelle. Zeichenfeld (max_length=60)
hood_logo = CloudinaryField('hood_logo', Standard='default.png')
Beschreibung = Modelle. Textfeld()
health_tell = Modelle. GanzzahlFeld(Null=WAHR, leer =WAHR)
Polizeinummer = Modelle. GanzzahlFeld(Null=WAHR, leer =WAHR)
Anzahl = Modelle. GanzzahlFeld(Null=WAHR, leer =WAHR)

def__str__(selbst):
zurückkehren F'{selbst.name} Haube'

Sie können die Beziehung in der App wie im Bild dargestellt sehen:

Der Nachbarschaft Modell hat jetzt einen Admin. Jeder, der eine Nachbarschaft erstellen möchte, muss über Administratorrechte verfügen. Und eine Nachbarschaft kann nicht viele Administratoren haben.

Many-to-Many-Datenbankbeziehungen

In Viele-zu-Viele-Beziehungen werden viele Datensätze in einem Modell mit anderen in einem anderen verknüpft. Zum Beispiel die Post Und Geschäft Modelle können mehrere Datensätze voneinander haben. Benutzer können mehrere Geschäftsanzeigen in ihren Beiträgen schalten und umgekehrt.

Das Erstellen von Viele-zu-viele-Beziehungen kann jedoch zu ungenauen Daten führen. In anderen Frameworks müssten Sie eine neue Tabelle erstellen, um die beiden Tabellen zu verknüpfen.

Django hat dafür eine Lösung. Wenn Sie das Many-to-Many-Feld verwenden, erstellt es eine neue Tabelle, die die beiden Tabellen zusammen abbildet. Sie können das Many-to-Many-Feld in eines der beiden Modelle einfügen, es sollte jedoch nicht in beiden Modellen vorhanden sein.

KlassePost(Modelle. Modell):
Titel = Modelle. CharField (max_länge=120, Null=WAHR)
Post = Modelle. Textfeld()
Datum = Modelle. DateTimeField (auto_now_add=WAHR)
Benutzer = Modelle. ForeignKey (Profil, on_delete=models. CASCADE, related_name='post_owner')
Haube = Modelle. ForeignKey (Nachbarschaft, on_delete=models. CASCADE, related_name='hood_post')
Geschäft = Modelle. ManyToManyField (Business)

def__str__(selbst):
zurückkehren F'{selbst.title} Beitrag'

Nun, wenn Sie die anzeigen Post Modell im Admin-Panel können Sie mehrere Unternehmen an einen Beitrag anhängen.

Django vereinfacht Datenbankbeziehungen

Die Art der Datenbank, die Sie für Ihre Anwendung verwenden, bestimmt, wie Daten nutzbar gemacht werden. Django verfügt über ein umfassendes System, das die Verbindung und den Betrieb relationaler Datenbanken einfach macht.

Django-Funktionen erleichtern das Speichern und Abrufen von Daten aus zugehörigen Tabellen. Es verfügt über integrierte APIs, die Datenbankbeziehungen für Ihre App verbinden und erstellen.

Datenbankbeziehungen bestimmen das Verhalten Ihrer Anwendung. Ob Sie Eins-zu-eins-, Eins-zu-viele- oder Viele-zu-viele-Beziehungen verwenden, hängt von Ihnen ab.

Mit Django können Sie Funktionen konfigurieren und testen, ohne Ihre Anwendung zu beschädigen. Verwenden Sie Django, um Datenbanksysteme zu sichern und Ihre Entwicklererfahrung zu optimieren.