2009-07-06 4 views
13

У меня есть модель с внешним ключом «Родитель»Как я могу получить все объекты в модели Django, которые имеют определенное значение для поля ForeignKey?

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

Это модель FK

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

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

Я пытаюсь выполнить запрос, который получает все товары с родителем «А "Я ничего не получаю

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

Когда я пытаюсь:

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

Или:

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

Я получаю сообщение об ошибке:

SyntaxError: keyword can't be an expression 

Что такое правильный способ сделать это?

ответ

26

Вы можете использовать двойное подчеркивание в ключевом слове, переданном filter(), для доступа к полям в отношении внешнего ключа. Как это:

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

Django documentation

+0

Огромное спасибо. –

1

Только для дальнейшего использования для Googlers, с последними версиями Django вы должны использовать дополнительный метод в ключевом слове. Например, вместо parent__name вы должны сделать parent__name__exact. Ссылки Cato содержат другие примеры.