Django 1.9.1 release notes

January 2, 2016

Django 1.9.1 fixes several bugs in 1.9.

Bugfixes

  • Fixed BaseCache.get_or_set() with the DummyCache backend (#%s25840).
  • Fixed a regression in FormMixin causing forms to be validated twice (#%s25548, #%s26018).
  • Fixed a system check crash with nested ArrayFields (#%s25867).
  • Fixed a state bug when migrating a SeparateDatabaseAndState operation backwards (#%s25896).
  • Fixed a regression in CommonMiddleware causing If-None-Match checks to always return HTTP 200 (#%s25900).
  • Fixed missing varchar/text_pattern_ops index on CharField and TextField respectively when using AlterField on PostgreSQL (#%s25412).
  • Fixed admin’s delete confirmation page’s summary counts of related objects (#%s25883).
  • Added from __future__ import unicode_literals to the default apps.py created by startapp on Python 2 (#%s25909). Add this line to your own apps.py files created using Django 1.9 if you want your migrations to work on both Python 2 and Python 3.
  • Prevented QuerySet.delete() from crashing on MySQL when querying across relations (#%s25882).
  • Fixed evaluation of zero-length slices of QuerySet.values() (#%s25894).
  • Fixed a state bug when using an AlterModelManagers operation (#%s25852).
  • Fixed TypedChoiceField change detection with nullable fields (#%s25942).
  • Fixed incorrect timezone warnings in custom admin templates that don’t have a data-admin-utc-offset attribute in the body tag. (#%s25845).
  • Fixed a regression which prevented using a language not in Django’s default language list (LANGUAGES) (#%s25915).
  • Avoided hiding some exceptions, like an invalid INSTALLED_APPS setting, behind AppRegistryNotReady when starting runserver (#%s25510). This regression appeared in 1.8.5 as a side effect of fixing #%s24704 and by mistake the fix wasn’t applied to the stable/1.9.x branch.
  • Fixed migrate --fake-initial detection of many-to-many tables (#%s25922).
  • Restored the functionality of the admin’s list_editable add and change buttons (#%s25903).
  • Fixed isnull query lookup for ForeignObject (#%s25972).
  • Fixed a regression in the admin which ignored line breaks in read-only fields instead of converting them to <br> (#%s25465).
  • Fixed incorrect object reference in SingleObjectMixin.get_context_object_name() (#%s26006).
  • Made loaddata skip disabling and enabling database constraints when it doesn’t load any fixtures (#%s23372).
  • Restored contrib.auth hashers compatibility with py-bcrypt (#%s26016).
  • Fixed a crash in QuerySet.values()/values_list() after an annotate() and order_by() when values()/values_list() includes a field not in the order_by() (#%s25316).