Unterschied zwischen 'related_name' und 'related_query_name' Attribute in Django?
Erklären Sie sich den Unterschied zwischen related_name
und related_query_name
Attribute für das Feld-Objekt in Django ? Wenn ich Sie verwende, Wie Sie zu nutzen? Danke!
Du musst angemeldet sein, um einen Kommentar abzugeben.
related_name
wird das Attribut des zugehörigen Objekts, das Ihnen erlaubt zu gehen, "rückwärts", um das Modell mit dem Fremdschlüssel auf. Zum Beispiel, wennModelA
hat ein Feld wie:model_b = ForeignKeyField(ModelB, related_name='model_as')
dies würde es ermöglichen Ihnen den Zugriff auf dieModelA
Instanzen, die einen Bezug zu IhremModelB
Instanz gehenmodel_b_instance.model_as.all()
. Beachten Sie, dass dies ist in der Regel geschrieben wird, ein plural für einen Fremdschlüssel, weil ein Fremdschlüssel ist ein eins-zu-viele-Beziehung und die N-Seite der Gleichung ist das Modell mit der Foreign Key-Feld erklärt, auf es.Den weiteren Erklärung verbunden, auf die in der Dokumentation ist hilfreich. https://docs.djangoproject.com/en/dev/topics/db/queries/#backwards-related-objects
related_query_name
ist für den Einsatz in Django querysets. Es ermöglicht Ihnen, filter auf die umgekehrte Beziehung einer foreign key-verwandten Bereich. Weiter zu unserem Beispiel - ein Feld, aufModel A
wie:model_b = ForeignKeyField(ModelB, related_query_name='model_a')
würde Ihnen ermöglichen, zu verwendenmodel_a
als such-parameter in einem queryset, wie:ModelB.objects.filter(model_a=whatever)
. Es ist häufiger zu nutzen, eine einzigartige form für dierelated_query_name
. Wie die docs sagen, ist es nicht notwendig, geben Sie die beiden (oder beiden)related_name
undrelated_query_name
. Django hat sinnvolle Standardwerte.related_query_name defaults to the value of related_name or default_related_name if set, otherwise it defaults to the name of the model
Hier foreign key-forward-relation wird das Album von Musiker-und rückwärts-Verhältnis ist Musiker zum album. bedeuten einen album-Instanz relation mit nur einem Musiker Instanz(forward-relation), und eine Musiker-Instanz kann sich auf mehrere album-Instanz(rückwärts).
forward-Abfrage wie diese Album_instance.Künstler , hier der Hinweis vorwärts Abfrage erfolgt durch Album_instanc gefolgt von Künstler(Feld name). und hinten wäre
hier für rückwärts Abfrage modelname_set verwendet wird .
nun, wenn Sie gibt die related_name wie
artist = models.ForeignKey(Musician, on_delete=models.CASCADE, related_name='back')
dann rückwärts Abfrage-syntax ändern modelname_set(Künstler.set) werden ersetzt durch zurück.
jetzt rückwärts Abfrage
Wenn Sie lieber Django nicht zu schaffen, eine rückwärts relation gesetzt related_name zu ' + ' - oder beenden Sie es mit '+'.
und related_query_name für die reverse-filter-name aus dem Ziel-Modell