Фильтр значков Django не возвращает результатов, если строка содержит пробелы - mysql.connector.django - PullRequest
0 голосов
/ 14 мая 2019

У меня есть окно автозаполнения поиска, которое возвращает курсы, когда пользователи вводят строку запроса. Это нормально работает на моем сервере разработки, но при развертывании в режиме реального времени он возвращает результаты только тогда, когда пользователь вводит одно слово, а не несколько слов, разделенных пробелами. Это проблема, поскольку названия курсов могут содержать пробелы.

По независящим от меня причинам я вынужден использовать 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_pure устанавливается из-за этой ошибки .

Мне известно, что запросы MySQL не учитывают регистр по умолчанию, но я бы подумал, что использование icontains все равно вернет результаты.

1 Ответ

0 голосов
/ 17 мая 2019

Строка query передается как параметр URL, и я обнаружил, что когда он содержал пробел, представление пыталось обработать пространство как %20, поэтому очевидно, что никаких результатов не было возвращено.

Я процитировал запрос следующим образом:

from urllib.parse import unquote

...

query = unquote(query)

Я предполагаю, что это запутанность сервера.Мне никогда не приходилось делать это с другими приложениями, развернутыми в других местах.Если кто-то может подтвердить, однако, я был бы заинтересован.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...