1. ==========================
    
  2. Django 1.9.1 release notes
    
  3. ==========================
    
  4. 
    
  5. *January 2, 2016*
    
  6. 
    
  7. Django 1.9.1 fixes several bugs in 1.9.
    
  8. 
    
  9. Bugfixes
    
  10. ========
    
  11. 
    
  12. * Fixed ``BaseCache.get_or_set()`` with the ``DummyCache`` backend
    
  13.   (:ticket:`25840`).
    
  14. 
    
  15. * Fixed a regression in ``FormMixin`` causing forms to be validated twice
    
  16.   (:ticket:`25548`, :ticket:`26018`).
    
  17. 
    
  18. * Fixed a system check crash with nested ``ArrayField``\s (:ticket:`25867`).
    
  19. 
    
  20. * Fixed a state bug when migrating a ``SeparateDatabaseAndState`` operation
    
  21.   backwards (:ticket:`25896`).
    
  22. 
    
  23. * Fixed a regression in ``CommonMiddleware`` causing ``If-None-Match`` checks
    
  24.   to always return HTTP 200 (:ticket:`25900`).
    
  25. 
    
  26. * Fixed missing ``varchar/text_pattern_ops`` index on ``CharField`` and
    
  27.   ``TextField`` respectively when using ``AlterField`` on PostgreSQL
    
  28.   (:ticket:`25412`).
    
  29. 
    
  30. * Fixed admin's delete confirmation page's summary counts of related objects
    
  31.   (:ticket:`25883`).
    
  32. 
    
  33. * Added ``from __future__ import unicode_literals`` to the default ``apps.py``
    
  34.   created by ``startapp`` on Python 2 (:ticket:`25909`). Add this line to your
    
  35.   own ``apps.py`` files created using Django 1.9 if you want your migrations
    
  36.   to work on both Python 2 and Python 3.
    
  37. 
    
  38. * Prevented ``QuerySet.delete()`` from crashing on MySQL when querying across
    
  39.   relations (:ticket:`25882`).
    
  40. 
    
  41. * Fixed evaluation of zero-length slices of ``QuerySet.values()``
    
  42.   (:ticket:`25894`).
    
  43. 
    
  44. * Fixed a state bug when using an ``AlterModelManagers`` operation
    
  45.   (:ticket:`25852`).
    
  46. 
    
  47. * Fixed ``TypedChoiceField`` change detection with nullable fields
    
  48.   (:ticket:`25942`).
    
  49. 
    
  50. * Fixed incorrect timezone warnings in custom admin templates that don't have
    
  51.   a ``data-admin-utc-offset`` attribute in the ``body`` tag.
    
  52.   (:ticket:`25845`).
    
  53. 
    
  54. * Fixed a regression which prevented using a language not in Django's default
    
  55.   language list (:setting:`LANGUAGES`) (:ticket:`25915`).
    
  56. 
    
  57. * Avoided hiding some exceptions, like an invalid ``INSTALLED_APPS`` setting,
    
  58.   behind ``AppRegistryNotReady`` when starting ``runserver`` (:ticket:`25510`).
    
  59.   This regression appeared in 1.8.5 as a side effect of fixing :ticket:`24704`
    
  60.   and by mistake the fix wasn't applied to the ``stable/1.9.x`` branch.
    
  61. 
    
  62. * Fixed ``migrate --fake-initial`` detection of many-to-many tables
    
  63.   (:ticket:`25922`).
    
  64. 
    
  65. * Restored the functionality of the admin's ``list_editable`` add and change
    
  66.   buttons (:ticket:`25903`).
    
  67. 
    
  68. * Fixed ``isnull`` query lookup for ``ForeignObject``
    
  69.   (:ticket:`25972`).
    
  70. 
    
  71. * Fixed a regression in the admin which ignored line breaks in read-only fields
    
  72.   instead of converting them to ``<br>`` (:ticket:`25465`).
    
  73. 
    
  74. * Fixed incorrect object reference in
    
  75.   ``SingleObjectMixin.get_context_object_name()`` (:ticket:`26006`).
    
  76. 
    
  77. * Made ``loaddata`` skip disabling and enabling database constraints when it
    
  78.   doesn't load any fixtures (:ticket:`23372`).
    
  79. 
    
  80. * Restored ``contrib.auth`` hashers compatibility with ``py-bcrypt``
    
  81.   (:ticket:`26016`).
    
  82. 
    
  83. * Fixed a crash in ``QuerySet.values()/values_list()`` after an ``annotate()``
    
  84.   and ``order_by()`` when ``values()/values_list()`` includes a field not in
    
  85.   the ``order_by()`` (:ticket:`25316`).