2017-02-21 6 views
0

Qオブジェクトの検索に問題があります。ユーザーが複数の用語を検索すると、すべての用語が同じオブジェクトにない限り、検索で何も返されません。Django Qオブジェクトのルックアップを1つのフィルタに結合する

https://www.soledadmemorial.com/plaquesにアクセスしてDavid S Hackleyを検索すると、何も返されませんが、David Sを検索すると結果が表示されます。

(Q(first_name__icontains=query), Q(last_name__icontains=query))のようなフィルタを組み合わせようとしましたが、エラーが発生しました。以下は私の現在のコードです。複数のオブジェクトからの検索を組み合わせることなく動作します。

... 
if query: 
    queryset_list = queryset_list.filter(
    Q(first_name__icontains=query) | 
    Q(last_name__icontains=query) | 
    Q(branch__icontains=query) | 
    Q(rank__icontains=query) | 
    Q(group__group_name__icontains=query) | 
    Q(veteran__name__icontains=query) 
).distinct() 
... 
+0

私は、クエリは、実際にはDjangoによって生成されるどのような複数のオブジェクト –

+0

から検索を組み合わせて意味どのように取得しないの使用を検討すべきである、とあなたは何を期待していますか? – spectras

答えて

2

icontainsあなたはデビッド・Sを探しているとき、それはfirst_nameのようにそれを見つけた

ILIKE '%query_text%' 

としてデータベースに変換されます。

icontainsは文句を言わない、ここでそれを行うようにするには、データベース内の列のいずれかのような

ILIKE '%David S Hackley%' 

を持っていません。

あなたはSearchVector(postgresの)あるいはhaystack

+0

ありがとうございます。他の方法へのリンクを提供するのではなく、何が起きているのかを説明したので、私はそれを投票しました。 –

+0

ILIKEを使用しているため、小さな修正用に編集されています – iklinac

関連する問題