Я использую универсальные представления и пытаюсь выполнить запрос к моей базе данных MySQL (сортировка utf8_bin) в нечувствительном к регистру поместье, чтобы попытаться найти все названия моих песен, которые начинаются с определенной буквы.
view.py
def tracks_by_title(request, starts_with):
return object_list(
request,
queryset = Track.objects.filter(title__istartswith=starts_with),
template_name = 'tlkmusic_base/titles_list.html',
template_object_name = 'tracks',
paginate_by = 25,
)
и мой
urls.py
urlpatterns = patterns('tlkmusic.apps.tlkmusic_base.views',
(r'^titles/(?P<starts_with>\w)/$', tracks_by_title),
)
запрос, который он создает в соответствии с панелью отладки django:
SELECT `tracks`.`id`, `tracks`.`url`, `tracks`.`artist`, `tracks`.`album`, `tracks`.`genre`, `tracks`.`year`, `tracks`.`title`, `tracks`.`comment`, `tracks`.`tracknumber`, `tracks`.`discnumber`, `tracks`.`bitrate`, `tracks`.`length`, `tracks`.`samplerate`, `tracks`.`filesize`, `tracks`.`createdate`, `tracks`.`modifydate` FROM `tracks` WHERE `tracks`.`title` LIKE a% LIMIT 1
конкретно эта строка:
WHERE `tracks`.`title` LIKE a% LIMIT 1
Почему не учитывается регистр, чего я и ожидал, используя __istartswith?
Я использую Django 1.1.1 в Ubuntu.
EDIT
Запуск SELECT *
FROM tracks
WHERE title LIKE 'a%'
LIMIT 0 , 30
в phpmyadmin по-прежнему возвращает регистрозависимые результаты, поэтому я хочу избегать изменения параметров сортировки, потому что база данных поддерживается Amarok, и я не знаю результатов изменения параметров сортировки в конце.