2017-05-31 16 views
0

の変化量と、リストからクエリ次のリストを作る:は、例えば、私が持っている値

list1 = ['blue', 'red'] 
list2 = ['green', 'yellow', 'black'] 

どのように私はすべての値(PostgreSQLの使用)の検索クエリを作成することができます。

これはうまくいきますが、2つの値しかハードコードされていないため、さまざまな値の値を処理できません。

entry.objects.annotate(search=SearchVector('colors')).filter(search=SearchQuery('blue') | SearchQuery('red')) 

私は「SEARCH_QUERY」の文字列を作成して、私のクエリでそれを配置するために、以下を試してみました:

for c in color: 
    search_string += "SearchQuery('" + c +"') | " 

search_string = search_string[:-3] 

私は今置けばこれは、次のsearch_strings

SearchQuery('blue') | SearchQuery('red') 
SearchQuery('green') | SearchQuery('yellow') | SearchQuery('black') 

になります私のクエリのこの文字列は、動作しません。

entry.objects.annotate(search=SearchVector('colors')).filter(search=search_string) 

この問題を解決するお手伝いをしていただきありがとうございます。 Postgresの検索ドキュメントジャンゴする

リンク:https://docs.djangoproject.com/en/1.11/ref/contrib/postgres/search/

答えて

2

を私は、PostgreSQLについて知らないが:

# Can run this query with SQL (i think django query auto convert for each type of DataBase???) 
res = Models.Objects.filter(color__in = list1) 
more_res = Models.Objects.filter(Q(color__in = list1) | Q(color__in = list2)) 

Djangoは基本的なクエリ(それはあなたのために働く場合、私は知らない???)

1

search_stringは文字列であるため機能しません。

evalを使用して問題なく動作させることができます。試してみてください:

しかし、これは最善の方法ではありません。見てくださいthis

関連する問題