1. linki

    09.10.2008 16:17

    Хотел сделать выборки через field__istartswith = 'тест',но не получилось.Почтила на форумах нашел что как-то криво работает с русским.Как решить эту проблему?
  2. Иван Сагалаев

    09.10.2008 16:40

    "Как-то криво" — это не то, на чем стоит строить выводы :-). istartswith на стороне Джанго никаким особенным образом не обрабатывается, все зависит от СУБД. В ней должны быть правильно настроены кодировка и так называемый collation — конфигурационный параметр, который как раз отвечает за то, по каким правилам буквы приводятся к регистрам и сортируются. Каким он должен быть фактически, зависит от СУБД.

  3. linki

    09.10.2008 17:04

    извиняюсь,не корректно выразился. На сервере стоит postgresql 8.3.3. А можно поподробнее рассказать про настройки СУБД?
  4. Иван Сагалаев

    09.10.2008 19:42

    Ага... Хорошая новость в том, что работать в принципе оно должно. У меня тоже 8.3 Postgres, и оно работает:

    select subject from cicero_topic where subject ilike 'те%';
    
                            subject                    
    -----------------------------------------------
     Тестовая тема
     Тема?
     тест немецкого текста
    

    Плохая новость в том, что я понятия не имею, как посмотреть текущий collation :-). У меня оно так стоит "от рождения", благо Ubuntu во всей конфигурации пихает unicode и правильный collation куда только можно.

    Хотя скорее всего, если оно не работает, придется создавать новый "кластер" (по сути — директорию с данными, в которой физически хранятся все базы) с нужными параметрами, потому что эти вещи в Postgres настраиваются раз и навсегда для всех баз. Делается это командой initdb.

  5. linki

    11.10.2008 17:48

    Странно попробовал сделать запрос в базе как писали вы Иван.Если ввожу в нижнем регистре,но ничего не находит,а если в верхнем ,то работает. Язык русский
  6. Иван Сагалаев

    11.10.2008 18:17

    Ну это скорее всего и означает, что collation неверный.

bbcode