{"title":"Django 2.2.1 release notes","version":"dev","locale":"en","docname":"releases/2.2.1","url":"/en/dev/releases/2.2.1/","canonical":"https://djangodocs.dev/en/dev/releases/2.2.1/","summary":"Django 2.2.1 fixes several bugs in 2.2. Fixed a regression in Django 2.1 that caused the incorrect quoting of database user password when using dbshell on…","html":"<h1>Django 2.2.1 release notes<a class=\"heading-anchor\" href=\"#django-2-2-1-release-notes\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p><em>May 1, 2019</em></p>\n<p>Django 2.2.1 fixes several bugs in 2.2.</p>\n<section id=\"bugfixes\">\n<h2>Bugfixes<a class=\"heading-anchor\" href=\"#bugfixes\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<ul class=\"simple\">\n<li><p>Fixed a regression in Django 2.1 that caused the incorrect quoting of\ndatabase user password when using <a class=\"reference internal\" href=\"/en/dev/ref/django-admin/#django-admin-dbshell\"><code class=\"xref std std-djadmin docutils literal notranslate\">dbshell</code></a> on Oracle\n(<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/30307\">#30307</a>).</p></li>\n<li><p>Added compatibility for <code class=\"docutils literal notranslate\">psycopg2</code> 2.8 (<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/30331\">#30331</a>).</p></li>\n<li><p>Fixed a regression in Django 2.2 that caused a crash when loading the\ntemplate for the technical 500 debug page (<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/30324\">#30324</a>).</p></li>\n<li><p>Fixed crash of <code class=\"docutils literal notranslate\">ordering</code> argument in\n<a class=\"reference internal\" href=\"/en/dev/ref/contrib/postgres/aggregates/#django.contrib.postgres.aggregates.ArrayAgg\" title=\"django.contrib.postgres.aggregates.ArrayAgg\"><code class=\"xref py py-class docutils literal notranslate\">ArrayAgg</code></a> and\n<a class=\"reference internal\" href=\"/en/dev/ref/contrib/postgres/aggregates/#django.contrib.postgres.aggregates.StringAgg\" title=\"django.contrib.postgres.aggregates.StringAgg\"><code class=\"xref py py-class docutils literal notranslate\">StringAgg</code></a> when it contains an\nexpression with params (<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/30332\">#30332</a>).</p></li>\n<li><p>Fixed a regression in Django 2.2 that caused a single instance fast-delete\nto not set the primary key to <code class=\"docutils literal notranslate\">None</code> (<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/30330\">#30330</a>).</p></li>\n<li><p>Prevented <a class=\"reference internal\" href=\"/en/dev/ref/django-admin/#django-admin-makemigrations\"><code class=\"xref std std-djadmin docutils literal notranslate\">makemigrations</code></a> from generating infinite migrations for\ncheck constraints and partial indexes when <code class=\"docutils literal notranslate\">condition</code> contains\na <a class=\"reference external\" href=\"https://docs.python.org/3/library/stdtypes.html#range\" title=\"(in Python v3.14)\"><code class=\"docutils literal notranslate\">range</code></a> object (<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/30350\">#30350</a>).</p></li>\n<li><p>Reverted an optimization in Django 2.2 (<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/29725\">#29725</a>) that caused the\ninconsistent behavior of <code class=\"docutils literal notranslate\">count()</code> and <code class=\"docutils literal notranslate\">exists()</code> on a reverse\nmany-to-many relationship with a custom manager (<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/30325\">#30325</a>).</p></li>\n<li><p>Fixed a regression in Django 2.2 where\n<a class=\"reference internal\" href=\"/en/dev/ref/paginator/#django.core.paginator.Paginator\" title=\"django.core.paginator.Paginator\"><code class=\"xref py py-class docutils literal notranslate\">Paginator</code></a> crashes if <code class=\"docutils literal notranslate\">object_list</code> is\na queryset ordered or aggregated over a nested <code class=\"docutils literal notranslate\">JSONField</code> key transform\n(<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/30335\">#30335</a>).</p></li>\n<li><p>Fixed a regression in Django 2.2 where <code class=\"docutils literal notranslate\">IntegerField</code> validation of\ndatabase limits crashes if <code class=\"docutils literal notranslate\">limit_value</code> attribute in a custom validator is\ncallable (<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/30328\">#30328</a>).</p></li>\n<li><p>Fixed a regression in Django 2.2 where\n<a class=\"reference internal\" href=\"/en/dev/ref/contrib/postgres/search/#django.contrib.postgres.search.SearchVector\" title=\"django.contrib.postgres.search.SearchVector\"><code class=\"xref py py-class docutils literal notranslate\">SearchVector</code></a> generates SQL that is\nnot indexable (<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/30385\">#30385</a>).</p></li>\n<li><p>Fixed a regression in Django 2.2 that caused an exception to be raised when\na custom error handler could not be imported (<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/30318\">#30318</a>).</p></li>\n<li><p>Relaxed the system check added in Django 2.2 for the admin app’s dependencies\nto reallow use of\n<a class=\"reference internal\" href=\"/en/dev/ref/middleware/#django.contrib.sessions.middleware.SessionMiddleware\" title=\"django.contrib.sessions.middleware.SessionMiddleware\"><code class=\"xref py py-class docutils literal notranslate\">SessionMiddleware</code></a> subclasses,\nrather than requiring <a class=\"reference internal\" href=\"/en/dev/topics/http/sessions/#module-django.contrib.sessions\" title=\"django.contrib.sessions: Provides session management for Django projects.\"><code class=\"xref py py-mod docutils literal notranslate\">django.contrib.sessions</code></a> to be in\n<a class=\"reference internal\" href=\"/en/dev/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\">INSTALLED_APPS</code></a> (<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/30312\">#30312</a>).</p></li>\n<li><p>Increased the default timeout when using <code class=\"docutils literal notranslate\">Watchman</code> to 5 seconds to prevent\nfalling back to <code class=\"docutils literal notranslate\">StatReloader</code> on larger projects and made it customizable\nvia the <span class=\"target\" id=\"index-0\"></span><a class=\"reference internal\" href=\"/en/dev/ref/django-admin/#envvar-DJANGO_WATCHMAN_TIMEOUT\"><code class=\"xref std std-envvar docutils literal notranslate\">DJANGO_WATCHMAN_TIMEOUT</code></a> environment variable\n(<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/30361\">#30361</a>).</p></li>\n<li><p>Fixed a regression in Django 2.2 that caused a crash when migrating\npermissions for proxy models if the target permissions already existed. For\nexample, when a permission had been created manually or a model had been\nmigrated from concrete to proxy (<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/30351\">#30351</a>).</p></li>\n<li><p>Fixed a regression in Django 2.2 that caused a crash of <a class=\"reference internal\" href=\"/en/dev/ref/django-admin/#django-admin-runserver\"><code class=\"xref std std-djadmin docutils literal notranslate\">runserver</code></a>\nwhen URLConf modules raised exceptions (<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/30323\">#30323</a>).</p></li>\n<li><p>Fixed a regression in Django 2.2 where changes were not reliably detected by\nauto-reloader when using <code class=\"docutils literal notranslate\">StatReloader</code> (<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/30323\">#30323</a>).</p></li>\n<li><p>Fixed a migration crash on Oracle and PostgreSQL when adding a check\nconstraint with a <code class=\"docutils literal notranslate\">contains</code>, <code class=\"docutils literal notranslate\">startswith</code>, or <code class=\"docutils literal notranslate\">endswith</code> lookup (or\ntheir case-insensitive variant) (<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/30408\">#30408</a>).</p></li>\n<li><p>Fixed a migration crash on Oracle and SQLite when adding a check constraint\nwith <code class=\"docutils literal notranslate\">condition</code> contains <code class=\"docutils literal notranslate\">|</code> (<code class=\"docutils literal notranslate\">OR</code>) operator (<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/30412\">#30412</a>).</p></li>\n</ul>\n</section>","rootId":"django-2-2-1-release-notes","toc":[{"title":"Bugfixes","anchor":"bugfixes","children":[]}],"breadcrumbs":[{"docname":"releases/index","title":"Release notes","url":"/en/dev/releases/"}],"prev":{"docname":"releases/2.2.2","title":"Django 2.2.2 release notes","url":"/en/dev/releases/2.2.2/"},"next":{"docname":"releases/2.2","title":"Django 2.2 release notes","url":"/en/dev/releases/2.2/"},"formats":{"html":"/en/dev/releases/2.2.1/","markdown":"/en/dev/releases/2.2.1.md","json":"/en/dev/releases/2.2.1.json"},"source":"https://github.com/django/django/blob/main/docs/releases/2.2.1.txt","official":"https://docs.djangoproject.com/en/dev/releases/2.2.1/","inVersions":["dev","6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2"],"inLocales":["en"]}