Heim > Backend-Entwicklung > Python-Tutorial > Wie wirkt sich „verwandter_name' auf ManyToManyField- und ForeignKey-Beziehungen in Django aus?

Wie wirkt sich „verwandter_name' auf ManyToManyField- und ForeignKey-Beziehungen in Django aus?

Linda Hamilton
Freigeben: 2024-12-18 14:26:22
Original
882 Leute haben es durchsucht

How Does `related_name` Affect ManyToManyField and ForeignKey Relationships in Django?

Die Rolle von „Related_name“ verstehen

Beim Umgang mit ManyToManyField- und ForeignKey-Feldern in Django spielt das Argument „Related_name“ eine wichtige Rolle bei der Definition der Beziehung zwischen Modellen. Damit können Sie den umgekehrten Beziehungsnamen vom zugehörigen Modell zurück zum Quellmodell anpassen.

Auswirkung von Related_name auf ManyToManyField

Beachten Sie den angegebenen Code:

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

In diesem Beispiel gibt der related_name „maps“ den Namen der umgekehrten Beziehung vom Benutzermodell zurück zum Kartenmodell an. Ohne die Angabe eines zugehörigen_Namens würde Django automatisch die umgekehrte Beziehung mit dem Namen „map_set“ erstellen.

Das Benutzermodell hätte dann das folgende Attribut:

User.map_set.all()  # List of all maps related to the user
Nach dem Login kopieren

Allerdings mit dem angegebenen verwandten_Namen 'maps' kann das Benutzermodell jetzt die folgende Syntax verwenden:

user.maps.all()  # List of all maps related to the user
Nach dem Login kopieren

Diese sauberere Syntax ermöglicht einen bequemeren Zugriff auf die zugehörigen Modelle.

Umgang mit ForeignKey-Beziehungen

Related_name gilt auch für ForeignKey-Felder. Zum Beispiel:

class Post(db.Model):
    author = models.ForeignKey(User, related_name='posts')
Nach dem Login kopieren

Mit dieser Konfiguration kann das Autorenmodell alle zugehörigen Beiträge mithilfe der folgenden Syntax abrufen:

author.posts.all()  # List of all posts by the author
Nach dem Login kopieren

Umgekehrte Beziehung deaktivieren

In einigen Fällen In einigen Fällen kann es wünschenswert sein, die Erstellung der umgekehrten Beziehung vollständig zu deaktivieren. Um dies zu erreichen, setzen Sie den zugehörigen_Namen auf ein Pluszeichen (' '). Zum Beispiel:

class Map(db.Model):
    members = models.ManyToManyField(User, related_name='+')
Nach dem Login kopieren

In diesem Szenario wird das folgende Attribut im Benutzermodell nicht erstellt:

User.map_set.all()
Nach dem Login kopieren

Durch das Verständnis des Attributs „Related_Name“ und seiner Auswirkungen auf Beziehungen zwischen Modellen, Sie können Ihr Django-Datenbankdesign für einen effizienten Datenzugriff anpassen und optimieren.

Das obige ist der detaillierte Inhalt vonWie wirkt sich „verwandter_name' auf ManyToManyField- und ForeignKey-Beziehungen in Django aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage