2009-07-06 12 views
13

私はこれは私がXYZ」の親を持つすべてのアイテムを取得するクエリを実行しようとしていますForeignKeyフィールドに特定の値を持つDjangoモデルのすべてのオブジェクトを取得するにはどうすればよいですか?

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

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

FKモデルです

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

を「親」の外部キーを持つモデルを持っています私がしようとすると、「私は何も

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

だけのGooglerのための今後の参考のために、Djangoの最近のバージョンであなたは、キーワードに追加する方法を使用する必要があります。たとえば、parent__nameの代わりにparent__name__exactを実行する必要があります。 Catoのリンクには他の例があります。

関連する問題