Wie kann ich alle Objekte in einem Django-Modell zu bekommen, die einen bestimmten Wert für ein ForeignKey Feld hat?

StackOverflow https://stackoverflow.com/questions/1086341

  •  23-08-2019
  •  | 
  •  

Frage

Ich habe ein Modell mit einem Fremdschlüssel von „Parent“

class Item(models.Model):
parent = models.ForeignKey(Parent)

Dies ist das FK-Modell

class Parent(models.Model):
name = models.CharField(blank=True, max_length=100)

def __unicode__(self):
    return str(self.name)

Ich versuche, eine Abfrage auszuführen, die alle Objekte mit einem Elternteil von „xyz“ Ich habe nichts bekommt bekommen

Item.objects.filter(parent="xyz")

Wenn ich versuche:

Item.objects.filter(parent.name="xyz")

Oder:

Item.objects.filter(str(parent)="xyz")

Ich erhalte eine Fehlermeldung:

SyntaxError: keyword can't be an expression

Was ist der richtige Weg, dies zu tun?

War es hilfreich?

Lösung

Sie können einen Doppelstrich in dem Schlüsselwort für den Zugriff auf Felder filter() in einer Fremdschlüsselbeziehung bestanden verwenden. Wie folgt aus:

Item.objects.filter(parent__name="xyz")

Django Dokumentation

Andere Tipps

Nur für zukünftige Referenz für Googler, mit neueren Versionen von Django haben Sie eine zusätzliche Methode im Schlüsselwort zu verwenden. Zum Beispiel, statt parent__name haben Sie parent__name__exact zu tun. Catos Link enthält weitere Beispiele.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top