Запрос в объектах с помощью django orm с содержащимся предложением

У меня есть несколько таких городов:

In [99]: City.objects.filter(title='Hamilton')
Out[99]: <QuerySet [<City: hamilton>]

У меня есть несколько предложений, подобных этому:

sentence = '3101A 1280 Main Street West Hamilton ON L8S 4K1'

Как найти города, название которых содержит это предложение?

Примечание: я использовал этот метод, но это не True. потому что этот запрос полезен для списка, а не для строки в django:

In [100]: City.objects.filter(slug__in=sentence)
Out[100]: <QuerySet []>

Вы можете использовать Contains поиск для нечувствительного к регистру поиска подстроки:

from django.db.models import F, Value
from django.db.models.lookups import Contains

City.objects.filter(Contains(Value(sentence), F('title')))

While using the __icontains lookup [Django-doc] produces results for text, this often is still a poor way to search, since it will only fetch items with the exact string. Usually one uses solutions like Elastic or Solr, or one can uses PostgreSQL's __search lookup [Django-doc].

Вернуться на верх