2009-07-06 11 views
13

Mam model z klucz obcy z „rodzic”Jak mogę uzyskać wszystkie obiekty w modelu Django, które mają określoną wartość dla pola ForeignKey?

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

Jest to model FK

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

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

Próbuję uruchomić kwerendę, która pobiera wszystkie przedmioty z rodzicem „xyz "ja się niczego

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

Kiedy próbuję:

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

Lub:

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

pojawia się błąd:

SyntaxError: keyword can't be an expression 

Co to jest właściwy sposób to zrobić?

Odpowiedz

26

Możesz użyć podwójnego podkreślenia w słowie kluczowym przekazanym do filter(), aby uzyskać dostęp do pól w relacji klucza obcego. Tak:

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

Django documentation

+0

niesamowite dzięki. –

1

tylko dla przyszłości przez pracowników Google, z ostatnich wersji Django trzeba stosować dodatkowe metody w słowa kluczowego. Na przykład zamiast parent__name musisz wykonać parent__name__exact. Łącze Cato zawiera inne przykłady.

Powiązane problemy