Heim >Backend-Entwicklung >Python-Tutorial >Wie verbessert „verwandter_name' umgekehrte Beziehungen in Django-Modellen?

Wie verbessert „verwandter_name' umgekehrte Beziehungen in Django-Modellen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-16 11:15:14751Durchsuche

How Does `related_name` Enhance Reverse Relationships in Django Models?

Übersicht über verwandte Namen in Django-Modellen

Bei der Arbeit mit relationalen Datenbanken in Django spielt der Parameter related_name eine entscheidende Rolle beim Aufbau umgekehrter Beziehungen . Dieser Artikel untersucht seine Verwendung und Bedeutung sowohl in ManyToManyField- als auch in ForeignKey-Feldern.

Many-to-Many-Beziehungen mit verwandten Namen

In ManyToManyField-Beziehungen definiert related_name den Attributnamen wird verwendet, um auf die umgekehrte Beziehung des zugehörigen Modells zuzugreifen. Zum Beispiel im folgenden Codeausschnitt:

class Map(db.Model):
    members = models.ManyToManyField(User, related_name='maps',
                                     verbose_name=_('members'))

Related_name='maps' gibt an, dass die umgekehrte Beziehung vom Benutzer zurück zur Karte als User.maps zugänglich sein wird. Durch das Hinzufügen des zugehörigen_Namens wird die Syntax im Vergleich zum standardmäßigen, von Django generierten umgekehrten Beziehungsnamen (User.map_set) intuitiver und weniger ausführlich.

Fremdschlüsselbeziehungen mit verwandten Namen

In ähnlicher Weise kann related_name in ForeignKey-Beziehungen verwendet werden. In diesem Fall definiert es jedoch den Attributnamen, der für den Zugriff auf die umgekehrte Beziehung im untergeordneten Modell verwendet wird. Die Angabe eines verwandten_Namens ist nicht zwingend erforderlich, verbessert aber die Lesbarkeit und Benutzerfreundlichkeit.

Zusätzliche Funktionen

Neben der Anpassung des Attributnamens der umgekehrten Relation bietet related_name weitere wichtige Funktionen:

  • Umgekehrte Beziehung deaktivieren: Durch Festlegen des zugehörigen_Namens zu „ “ wird die umgekehrte Beziehung explizit deaktiviert.
  • Abfragesyntax anpassen: Um eine benutzerdefinierte Abfragesyntax zu erreichen, können Entwickler related_name als Filterausdruck verwenden. Beispielsweise ruft User(name__in=current_user.maps.all().values_list('name', flat=True)) alle Benutzer ab, die Mitglieder einer der mit dem aktuellen Benutzer verknüpften Karten sind.

Das obige ist der detaillierte Inhalt vonWie verbessert „verwandter_name' umgekehrte Beziehungen in Django-Modellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn