python - 当字符串包含空格时,Django 过滤器 icontains 不返回结果 - mysql.connector.django

标签 python mysql django

我有一个搜索自动完成框,当用户输入查询字符串时,它会返回类(class)。这在我的开发服务器上运行良好,但是当部署到实际情况时,它仅在用户输入单个单词而不是用空格分隔的多个单词时返回结果。这是一个问题,因为类(class)标题可以包含空格。

由于我无法控制的原因,我不得不使用 mysql.connector.django 作为数据库后端。我对数据库配置的访问权限有限。

这是在开发中有效但在查询同一数据库时无效的代码:

courses = (Course.objects.filter(module__open=True, module__term__academic_year__live=True)
           .filter(title__icontains=query)
           .distinct()
           .order_by('category__title', 'title'))

这些是数据库设置:

DATABASES = {
    'default': {
        'ENGINE': 'mysql.connector.django',

        ...

        'PORT': '3306',
        'OPTIONS': {
            'use_pure': True
        }
    }
}

use_purethis bug 设置.

我知道 MySQL 查询默认情况下不考虑大小写,但我认为使用 icontains 仍然会返回结果。

最佳答案

query 字符串作为 URL 参数传递,我发现当它包含空格时, View 会尝试将空格处理为 %20,所以显然没有返回任何结果。

我取消引用查询,如下所示:

from urllib.parse import unquote

...

query = unquote(query)

我假设这是服务器的复杂性。我从来不需要对部署在其他地方的其他应用程序执行此操作。如果有人可以确认,我会很感兴趣。

关于python - 当字符串包含空格时,Django 过滤器 icontains 不返回结果 - mysql.connector.django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56127980/

相关文章:

python - 让客户端通过 Chalice 将图像上传到 S3 存储桶的最佳实践是什么?

python - Google App Engine 任务队列如何工作?

python - 函数变量值定义后发生变化

php - PDO 中的 mysql_result

mysql - SQL查询连接两个表,如果记录丢失则添加新记录

python - Django 无法使用原子事务的 try-exception block 回滚

python - django - 在一行中向字典添加多个对象

python - Pandas read_csv 无法将 ISO8601 识别为日期时间数据类型

MYSQL 子查询行作为主查询中的列

django - 使用 django 同步数据库内容