Я пытаюсь отфильтровать модель, передав текстовый запрос и проверив, содержит ли какое-либо из полей значение, которое полностью или частично соответствует данному текстовому запросу.
Допустим, у меня есть модель с именем Sample
, которая содержит поля символов ["name", "state", "type"]
.
Предполагая, что один из объектов модели имеет значение state
для установки "barely alive"
Я посмотрел на методы, описанные в следующем документе django:
https://docs.djangoproject.com/en/2.1/ref/contrib/postgres/search/
Я хочу получить этот объект, используя любой из "barely"
, "arely"
или "barely alive"
в качестве текстового запроса.
Я изначально пробовал что-то вроде Sample.objects.annotate(search=SearchVector(*list_of_fields)).filter(search__icontains=query_text)
Однако над строкой не будет возвращаться правильный набор запросов, если я передам полный текст barely alive
в качестве текста запроса и будет работать только при передаче неполного текста, такого как barely
или alive
.
Так что я тогда попробовал
Sample.objects.annotate(search=SearchVector(*list_of_fields)).filter(search=query_text).filter(search__icontains=query_text)
Но затем он возвращает пустой Queryset.
Что мне здесь не хватает?