Без учета регистра order_by в GAE с использованием django non-rel

Используя движок приложений Google и Django non-rel, я запрашиваю список фильмов и хочу отсортировать их в алфавитном порядке.

movies = Movie.objects.all().order_by("title")

Проблема заключается в том, что любые заголовки, которые не начинаются с символа верхнего регистра, не соответствуют одному и тому же шаблону сортировки.

Таким образом, если запросить эти фильмы и вернуть их отсортированными, то «iRobot» не будет между Бэтменом и Зуландером:

  1. Армагедон
  2. Бэтмен
  3. Zoolander
  4. я робот

Как мне заставить их делать order_by без учета регистра?

Спасибо


person adam    schedule 26.10.2010    source источник


Ответы (2)


Вам нужно денормализовать: сохранить отдельное свойство, которое содержит версию заголовка в нижнем регистре, и отсортировать по нему.

person Nick Johnson    schedule 26.10.2010
comment
Денормализация - это ответ на 80% вопросов о том, как выполнить X в хранилище данных GAE. - person drxzcl; 27.10.2010
comment
Не то решение, на которое я надеялся, но спасибо за ответ - person adam; 27.10.2010
comment
Возможно, нет, но это единственное индексируемое решение в любой СУБД. :) - person Nick Johnson; 27.10.2010

Может быть, вы можете использовать вычисляемое свойство, которое возвращает версию вашего свойства в нижнем регистре?

https://developers.google.com/appengine/docs/python/ndb/properties#computed

person Joost Ploegmakers    schedule 30.01.2013