Разница между title и title_icontains в фильтре модели django
чем отличается title от title_icontains в django ?
from .model import product
product.objects.filter(title='blah')
product.objects.filter(tite__icontains='blah')
Возможно, это title__icontains=…
так с двумя последовательными подчеркиваниями (__
). В таком случае вы используете __icontains
поиск [Django-doc]. Как сказано в документации, это:
Тест содержания без учета регистра.
Таким образом, он ищет Product
, где заголовок содержит blah
. Например, fooblah
, blahfoo
, из fooblahbar
. Это делается без учета регистра , поэтому продукты с названиями , FooBlah
и BLAHfoo
также будут сохранены.FooBlAHBAR
Первая форма ...filter(title='value')
вернет все объекты, название которых будет точно соответствовать значению.
Вторая форма, правильно записанная как ...filter(title__icontains)
, вернет все объекты, чей заголовок содержит значение, но при этом будут совпадать любые буквы верхнего/нижнего регистра.
Здесь i
означает "игнорировать регистр".
tite__icontains
- это поиск строки, но без учета регистра.