Joh*_*ohn 7 django django-queryset
我正在使用过滤器icontains搜索单词,但我只希望它匹配整个单词.例如,如果我搜索肝脏,我不希望它返回交付.
我的查询看起来像这样
MyModel.objects.filter(title__icontains=search_word)
Run Code Online (Sandbox Code Playgroud)
我已经看过过滤器,__search但这并没有带回3个字符或更少的结果,而我正在构建的网站包含很多可以搜索的结果,例如'bbc'
我没有访问数据库,但如果有人知道如何在代码中禁用它,那么我很乐意切换到使用它作为替代.
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)