繁体   English   中英

__包含过滤器不适用于mysql,不适用于本地SQLite数据库

[英]__contains filter doesn't work on mysql, works on local SQLite db

我有以下代码片段:

profiles_list = Profile.objects.filter(
    company=request.user.company,
)
search_query = None
search_key = None
if request.method == 'POST':
    search_key = request.POST.get('skey')
    search_query = request.POST.get('squery', None)
    profiles_list = profiles_list.filter(
        **{'%s__contains' % search_key:search_query}
    )

在具有SQLite数据库的本地开发机上,如果我输入search_query,例如“ Owal”,它将返回一条记录,其中search_key包含“ Owal”,因此得到“ Kowalski”。

我在带有MySQL的生产服务器上尝试了它,但是它不起作用。 你知道为什么吗?

Django文档中

SQLite不支持区分大小写的LIKE语句。 包含类似SQLite的icontains的行为。 有关更多信息,请参见数据库注释。

建议:改为使用%s__icontains

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM