2017-09-14 13 views
1

私は簡単な検索機能のためにQ検索を使用しています。ここで私は検索で質問を除外するだけでなくポストに沿って-にしたい、ビューから取られたコード、Djangoでの単純検索機能

if query: 
    object_list = Post.objects.filter(
     Q(title__icontains=query) | 
     Q(content__icontains=query) 
     ).distinct() 

ですしかし、私は別のモデル「質問」を持っています。

2つの別々のモデル、つまり '投稿' & '質問'を1つの変数、つまり「object_list」にまとめてQルックアップを使用するにはどうすればよいですか。

このコードで私を助けてください!

答えて

0

ストアQオブジェクト、各モデルのクエリのためにそれを再利用して、クエリセットをチェーン:

from itertools import chain 

q_obj = Q(title__icontains=query) | Q(content__icontains=query) 
object_list = chain(Post.objects.filter(q_obj).distinct(), 
        Question.objects.filter(q_obj).distinct()) 

これは、あなたが一度object_listに繰り返すことができます。完全に正常に動作し、

object_list = list(chain(Post.objects.filter(q_obj).distinct(), 
         Question.objects.filter(q_obj).distinct())) 
+0

WOW:複数の反復を可能にするには、リストにchainによって返されたイテレータを変えることができます。ありがとうございます :) –