2009-07-06 12 views
13

Ho un modello con una chiave esterna di "Parent"Come posso ottenere tutti gli oggetti in un modello Django che hanno un valore specifico per un campo ForeignKey?

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

Questo è il modello FK

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

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

Sto cercando di eseguire una query che ottiene tutti gli oggetti con un genitore di "xyz "non ottengo niente

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

Quando provo:

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

Oppure:

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

ottengo un errore:

SyntaxError: keyword can't be an expression 

Qual è il modo corretto di fare questo?

risposta

26

È possibile utilizzare una doppia sottolineatura nella parola chiave passata a filter() per accedere ai campi in una relazione di chiave esterna. Come questo:

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

Django documentation

+0

grazie fantastici. –

1

Solo per riferimento futuro per Googler, con le recenti versioni di Django è necessario utilizzare un ulteriore metodo della parola chiave. Ad esempio, invece di parent__name devi fare parent__name__exact. Il link di Cato contiene altri esempi.

Problemi correlati