Запрос в объектах с помощью 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].