2011-01-04 3 views
2

""で分割された1つの文字列にいくつかのキーワードがあります。私は列名のテーブルも持っています。 1つのキーワードの名前に含まれるすべてのレコードを取得するにはどうすればよいですか?containsとキーワードを含むDjangoクエリ

例:

キーワード=
「テストはエル分割」をそして私は、レコード「test2は」「要素」と「ショーtest2は」と「要素を」「クエリが返す必要があります」を持っている場合。

答えて

6
Table.objects.filter(name__in=keyword.split(' ')) 

OK、間違っていました。私はこれが1つのライナーまたは単一のSQLクエリで達成できるかどうかはわかりません。より多くの明白な方法は、このようなものですが、これが最適であるかどうかは、わかりません。

result = [] 
for keyword in keywords.split(' '): 
    result += list(Table.objects.filter(name__icontains=keyword)) 

[OK]を、これは単一のクエリで行うことができますが、私は正確にどのように確認していません。これを試すことができます:

final_pred = Q() 
    for pred in [Q(name__icontains=keyword) for keyword in keywords.split(' ')]: 
    final_pred = final_pred | pred; 
    Table.objects.filter(final_pre) 
+0

これはtest2を返しません。それは間違った答えです – szaman

+0

ええ、それは本当です。 – gruszczy

+0

これはいかがですか? – gruszczy