2016-08-29 4 views
0

モデル名に文字列が含まれているかどうかを判断するために必要な文字列のリストがあります。現在、私は一連のif文とelif文を使用して文字列のリストにいくつの文字列があるかを判断しています。このようなデータベースへのフィルタリクエストを実行します(これはうまくいきますが、非常に効率的です)。フィルタリクエストをdjangoのループで連結する

#example if my list contained only 2 strings 

if len(listOfStrings) == 2: 


    queryResults = MyModel.objects.filter(Q(name__contains=listOfStrings[0])|Q(name__contains=listOfStrings[1])) 

次に、これらのクエリの結果に基づいてクライアントに通知します。各モデルに対して文字列をテストすると、同じモデルが得られる可能性があります(一部のモデル名には3つまたは2つの文字列がすべて含まれるため)、クライアントに2回通知します。だから、私はfilter()方法は怠け者で、すぐに実行しないと、このPythonのロジックは、最も可能性の高い間違っていることを理解しそう

listOfStrings = {"string1","string2","string3"} 
queryResults = "" 
for string in listOfStrings: 
    queryResults += MyModel.objects.filter(name__contains=string) 

のようなforループを使用してこの問題を解決すると思うだろう。しかし、重複するモデル結果を避けるために、どのようにフィルタリクエストを連結しますか?

+0

これを確認してください(http://stackoverflow.com/questions/7088173/how-to-query-model-where-name-contains-any-word-in-python-list) – kt14

答えて

関連する問題