Heim >Backend-Entwicklung >Python-Tutorial >Wie vereinfacht „lated_name' den Zugriff auf verwandte Modelle in Djangos „ManyToManyField' und „ForeignKey'?

Wie vereinfacht „lated_name' den Zugriff auf verwandte Modelle in Djangos „ManyToManyField' und „ForeignKey'?

Barbara Streisand
Barbara StreisandOriginal
2024-12-06 21:44:16233Durchsuche

How Does `related_name` Simplify Access to Related Models in Django's `ManyToManyField` and `ForeignKey`?

Anwenden von Related_name auf ManyToManyField und ForeignKey für vereinfachten Zugriff

Frage:

Was ist das? Zweck des related_name-Arguments für die Felder ManyToManyField und ForeignKey? Betrachten Sie das folgende Beispiel:

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

Welche Auswirkung hat die Definition von related_name='maps' auf das Benutzermodell?

Antwort:

Das Attribut „Related_Name“ definiert den Namen der umgekehrten Beziehung vom referenzierten Modell (in diesem Fall „Benutzer“) zurück zum aktuellen Modell (Karte). Normalerweise erstellt Django automatisch eine umgekehrte Beziehung mit dem Suffix _set, aber die Angabe eines benutzerdefinierten related_name bietet eine prägnantere Möglichkeit, auf die zugehörigen Objekte zuzugreifen.

Wenn wir im bereitgestellten Beispiel ein Benutzerobjekt mit dem Namen current_user haben, haben wir kann mit current_user.maps.all() auf die zugehörigen Karten zugreifen. Dies ist praktischer als die standardmäßige umgekehrte Beziehungssyntax, die current_user.map_set.all() lauten würde.

Der zugehörige_Name kann auch auf „ “ gesetzt werden, um die Erstellung der umgekehrten Beziehung vollständig zu deaktivieren.

Das obige ist der detaillierte Inhalt vonWie vereinfacht „lated_name' den Zugriff auf verwandte Modelle in Djangos „ManyToManyField' und „ForeignKey'?. 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