Джанго запрос с содержанием и ключевыми словами - PullRequest
2 голосов
/ 04 января 2011

У меня есть несколько ключевых слов в одной строке, разделенных на "".У меня также есть таблица с именем столбца.Как я могу получить все записи, которые будут иметь в названии часть одного ключевого слова?

Пример:

keyword = 'test split el'
И если у меня есть записи в test2 ''element 'и' show ', запрос должен возвращать' test2 'и' element '.

1 Ответ

7 голосов
/ 04 января 2011
Table.objects.filter(name__in=keyword.split(' '))

ОК, это было неправильно. Я не знаю, если это может быть выполнено в один лайнер или один SQL-запрос. Более очевидный способ такой, но я не знаю, является ли это оптимальным:

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

Хорошо, это можно сделать одним запросом, но я не совсем уверен, как. Вы можете попробовать это:

   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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...