Django SQL ИЛИ через filter () & Q (): Dynamic?

Я использую простой поиск LIKE на моем веб-сайте Django, и сейчас я использую следующий код:

from django.db.models import Q
posts = Post.objects.filter(Q(title__icontains=query)|Q(content__icontains=query))

Где запрос представляет собой строку. В результате получается SQL-оператор LIKE , который работает нормально. Теперь я также хотел бы разбить свой поисковый запрос на термины или слова:

words = query.split(' ')

Итак words теперь содержит список слов, и я хотел бы получить оператор SQL, подобный:

SELECT ... FROM foo WHERE `title` ILIKE '%word1%' OR `title` ILIKE '%word2%'
  OR `content` ILIKE '%word1%' OR `content` ILIKE '%word2%'

И в случае, если слов больше, чем два, я бы хотел, чтобы оператор увеличивал список всех записей по каждому слово.

Есть идеи? Спасибо!

6
задан Tomasz Jakub Rup 8 December 2015 в 21:09
поделиться