django过滤器icontains仅匹配整个单词

Joh*_*ohn 7 django django-queryset

我正在使用过滤器icontains搜索单词,但我只希望它匹配整个单词.例如,如果我搜索肝脏,我不希望它返回交付.

我的查询看起来像这样

MyModel.objects.filter(title__icontains=search_word)
Run Code Online (Sandbox Code Playgroud)

我已经看过过滤器,__search但这并没有带回3个字符或更少的结果,而我正在构建的网站包含很多可以搜索的结果,例如'bbc'

我没有访问数据库,但如果有人知道如何在代码中禁用它,那么我很乐意切换到使用它作为替代.

lep*_*rem 6

Regexp通常就足够了:http: //docs.djangoproject.com/en/dev/ref/models/querysets/#regex

请注意,正则表达式语法是正在使用数据库后端的语法.

在python(sqlite)中,正则表达式将是:

\b(word)\b
Run Code Online (Sandbox Code Playgroud)

在Mysql中你有:

mysql> SELECT 'a word a' REGEXP '[[:<:]]word[[:>:]]';   -> 1
mysql> SELECT 'a xword a' REGEXP '[[:<:]]word[[:>:]]';  -> 0
Run Code Online (Sandbox Code Playgroud)