2009-07-06 4 views
13

Ich habe ein Modell mit einem Fremdschlüssel von „Parent“Wie kann ich alle Objekte in einem Django-Modell erhalten, die einen bestimmten Wert für ein ForeignKey-Feld haben?

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 bekommt "ich bekomme nichts

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

Wenn ich versuche:

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

Oder:

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

ich einen Fehler:

SyntaxError: keyword can't be an expression 

Was ist der richtige Weg, dies zu tun?

Antwort

26

Sie können einen doppelten Unterstrich in dem an filter() übergebenen Schlüsselwort verwenden, um auf Felder in einer Fremdschlüsselbeziehung zuzugreifen. Wie folgt aus:

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

Django documentation

+0

super danke. –

1

Gerade 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 müssen Sie statt parent__nameparent__name__exact tun. Catos Link enthält weitere Beispiele.