Примечания к выпуску Django 1.8.2¶
20 мая 2015 г.
В Django 1.8.2 исправлена проблема безопасности и несколько ошибок в версии 1.8.1.
Исправлен сброс сеанса в бэкэнде cached_db.¶
Изменение session.flush() в бэкенде сеанса cached_db в Django 1.8 ошибочно устанавливает для сеансового ключа пустую строку, а не None. Пустая строка рассматривается как действительный сеансовый ключ, и файл cookie сеанса устанавливается соответствующим образом. Любые пользователи с пустой строкой в файле cookie сеанса будут использовать одно и то же хранилище сеансов. session.flush() вызывается django.contrib.auth.logout() и, что более серьёзно, django.contrib.auth.login(), когда пользователь переключает учетные записи. Если пользователь вошел в систему и снова входит в другую учетную запись (без выхода из системы), сеанс очищается во избежание повторного использования. После сброса сеанса (и его сеансовый ключ становится '') данные учетной записи устанавливаются в сеансе, и сеанс сохраняется. Любые пользователи с пустой строкой в файле cookie сеанса теперь будут входить в эту учетную запись.
Исправления¶
Исправлена проверка уникальности псевдонима шаблонизатора (#24685).
Исправлен сбой при повторном использовании одного и того же экземпляра Case в запросе (#24752).
Исправлено продвижение объединения для выражений
Case. Например, аннотирование запроса выражением Case может неожиданно отфильтровать результаты (#24766).Исправлены отрицательные объекты
Qв выражениях. В таких случаях, какCase(When(~Q(friends__age__lte=30)))попыталась сгенерировать подзапрос, что привело к сбою (#24705).Исправлена некорректная генерация предложения GROUP BY в MySQL, когда модель запроса имеет самоссылающийся внешний ключ (#24748).
Реализован
ForeignKey.get_db_prep_value(), чтобыForeignKeys указывал наUUIDFieldи наследование в моделях сUUIDFieldпервичными ключами работало правильно (#24698, #24712).Исправлен поиск isnull для HStoreField (#24751).
Исправлен сбой MySQL, когда миграция удаляет комбинированный индекс (unique_together или index_together), содержащий внешний ключ (:ticket:24757).
Исправлено удаление файлов cookie сеанса при использовании
SESSION_COOKIE_DOMAIN(#24799).В PostgreSQL, когда доступ к базе данных postgres не предоставлен, Django теперь возвращается к базе данных по умолчанию, когда обычно требуется соединение «без базы данных» (#24791).
Исправлено отображение виджета
ForeignKeycontrib.admin``, когда он используется в строке с другими полями (#24784).