2016-06-22 23 views
1

私のDBに2つのテーブルがあるとします。そのうちの1つは、属性 'name'と 'id'を持つPersonと呼ばれ、もう1つはPersonという属性(Person表のidの外部キー)と 'id'という属性を持つRoleです。 ここで、Davidのような名前を与えられたクエリを作成し、その名前のすべての人物を見つけ出し、それらに関連付けられたロールも返します。すべての人が最大で1つの役割に関連付けられていることがわかっています。django外部キーを持つモデルを取得する

私はPerson.objects.filter(name=David).select_related('Role')を使用できないことを知っています。ロールは個人の属性ではないためです。とにかく私はDBに1ヒットだけでこれを得ることができますか?

Person.objects.filter(name='David') 

をデビッドと呼ばれるすべての人に関係するすべてのロールを取得するには:あなたはすでに書いたように

答えて

1

これは実際には、他の回答のいくつかに反して、非常に簡単なクエリです。覚えておくべきことは、ロールが必要な場合は、ロールモデルから始める必要があるということです。

Role.objects.filter(person__name='David') 
+0

いいえ、私もPersonオブジェクトが必要です。基本的に私はDBに1ヒットでロールと人物の両方を取得する方法を探しています。 –

+0

それから 'select_related( 'person')'を追加してください。 –

0

者を得るために、それはある

Role.objects.filter(person__name='David') 

与えられた人の役割を取得するには:

Role.objects.filter(person=person) 

あなたの質問からわかるように、このようなことをしてください。

+0

したがって、Davidという名前の人物と関連する役割を1つのクエリで取得する方法はありませんか? –

+1

いいえ:できるだけ複雑なPythonオブジェクトにクエリの結果を格納する必要があります。 – viron

関連する問題