2016-09-05 7 views
1

私は、このように多くのモデルを持っている:ジャンゴ:FKのための複雑なクエリセットフィルタ関連のモデル

Model 1: 
key=models.charfield() 
.... 

Model 2: 
..... 
key=fk(model1, ralated_name='model2key') 

model 3: 
..... 
key=fk(Model 2, related_name='model3key') 

models 4: 
..... 
key=FK(model 3, related_name='model4key') 

は今、私はモデル1 =何かを考慮したデータのフィルタ処理を必要とするモデル4のために、クエリセットを記述する必要があります。

どうすればよいですか?

答えて

1

これは動作するはずです:

Model4.objects.filter(key__key__key__key="some char value") 

を。これは、上記の表の間keyフィールドに3つのINNER JOIN Sを実行します。

+0

ありがとうございます。もう一つ。フィルタリングされた値を取得した後、それをさらに操作すると、フィルタリングされた値が再びフィルタリングされます。それはDBをもう一度、またはその1回の仕事に当てはめますか? –

+0

もう一度dbにヒットします。 – ozgur

+0

DBヒットが1回、残りのフィルタリングがPythonによって行われる方法はありますか? Djangoの学習者であることは、DBやPythonがうまく走っていることでしょうか? –

関連する問題