Wie kann ich alle Objekte in einem Django-Modell zu bekommen, die einen bestimmten Wert für ein ForeignKey Feld hat?
-
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?
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")
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.