14

「親」の外部キーを持つモデルがあります

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)

親が「xyz」のすべての項目を取得するクエリを実行しようとしていますが、何も取得できません

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

私がしようとすると:

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

または:

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

エラーが発生します:

SyntaxError: keyword can't be an expression

これを行う適切な方法は何ですか?

4

3 に答える 3

26

に渡されるキーワードで二重下線を使用してfilter()、外部キー関係のフィールドにアクセスできます。このような:

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

Django ドキュメント

于 2009-07-06T10:20:01.393 に答える
2

http://docs.djangoproject.com/en/dev/topics/db/queries/#lookups-that-span-relationships

于 2009-07-06T10:24:14.427 に答える
1

Google 社員の今後の参考として、最近のバージョンの Django では、キーワードで追加のメソッドを使用する必要があります。たとえば、するparent__name必要がある代わりにparent__name__exact。Cato のリンクには他の例が含まれています。

于 2011-05-23T14:41:32.800 に答える