Ich habe zwei Modelle Artikel und Blog mit einem Fremdschlüssel verwandt. Ich möchte beim Extrahieren des Artikels nur den Namen des Blogs auswählen.Auswahl bestimmter Felder mit select_related in Django
articles = Articles.objects.all().select_related('blog__name')
Die generierte Abfrage zeigt, dass alle Felder aus dem Blog-Modell ausgewählt wurden. Ich habe versucht mit nur() und defer() mit select_related aber beide haben nicht geklappt.
articles = Articles.objects.all().select_related('blog__name').only('blog__name', 'title', 'create_time')
Die obige Abfrage ergab Fehler: ungültiger Feldname (n) in select_related gegeben: Zur Wahl stehen: Blog
Wie erstelle ich eine Abfrage, so dass nur Artikel Felder und Blog-Name ausgewählt ist?
Ich glaube nicht, es ist möglich - die Dokumentation für 'only' zeigen keine Beispiele für durchqueren Beziehungen, während die Dokumentation für' select_related' nur Beispiele zeigen mehrere Beziehungen (dh 'rel__rel' durchqueren, nicht 'rel__field'). scheint das Beste zu sein, was Sie tun können: 'articles = Articles.objects.all(). select_related ('blog'). only ('blog', 'title', 'create_time')' – Anentropic
Was ist der Zweck, dies zu tun? Leistungsoptimierung? Sie können dies jedoch mit 'prefetch_related' machen, aber auf diese Weise erhalten Sie 2 Abfragen anstatt einer. 'Articles.objects.all(). Prefetch_related (Prefetch ('blog', querieset = Blog.objects.all(). Nur ('name')))' – Todor
Der einzige Zweck war, die Leistung zu optimieren. Ich benutze bereits select_related, aber es gibt alle Attribute, die viel Speicher verbrauchen. Gibt es einen anderen Weg, dies zu tun? – RA123