{"title":"Django 3.1.3 release notes","version":"dev","locale":"en","docname":"releases/3.1.3","url":"/en/dev/releases/3.1.3/","canonical":"https://djangodocs.dev/en/dev/releases/3.1.3/","summary":"Django 3.1.3 fixes several bugs in 3.1.2 and adds compatibility with Python 3.9.","html":"<h1>Django 3.1.3 release notes<a class=\"heading-anchor\" href=\"#django-3-1-3-release-notes\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p><em>November 2, 2020</em></p>\n<p>Django 3.1.3 fixes several bugs in 3.1.2 and adds compatibility with Python\n3.9.</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 3.1.2 that caused the incorrect height of the\nadmin changelist search bar (<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/32072\">#32072</a>).</p></li>\n<li><p>Fixed a regression in Django 3.1.2 that caused the incorrect width of the\nadmin changelist search bar on a filtered page (<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/32091\">#32091</a>).</p></li>\n<li><p>Fixed displaying Unicode characters in\n<a class=\"reference internal\" href=\"/en/dev/ref/forms/fields/#django.forms.JSONField\" title=\"django.forms.JSONField\"><code class=\"xref py py-class docutils literal notranslate\">forms.JSONField</code></a> and read-only\n<a class=\"reference internal\" href=\"/en/dev/ref/models/fields/#django.db.models.JSONField\" title=\"django.db.models.JSONField\"><code class=\"xref py py-class docutils literal notranslate\">models.JSONField</code></a> values in the admin\n(<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/32080\">#32080</a>).</p></li>\n<li><p>Fixed a regression in Django 3.1 that caused a crash of\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> with <code class=\"docutils literal notranslate\">ordering</code>\non key transforms for <a class=\"reference internal\" href=\"/en/dev/ref/models/fields/#django.db.models.JSONField\" title=\"django.db.models.JSONField\"><code class=\"xref py py-class docutils literal notranslate\">JSONField</code></a> (<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/32096\">#32096</a>).</p></li>\n<li><p>Fixed a regression in Django 3.1 that caused a crash of <code class=\"docutils literal notranslate\">__in</code> lookup when\nusing key transforms for <a class=\"reference internal\" href=\"/en/dev/ref/models/fields/#django.db.models.JSONField\" title=\"django.db.models.JSONField\"><code class=\"xref py py-class docutils literal notranslate\">JSONField</code></a> in the lookup\nvalue (<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/32096\">#32096</a>).</p></li>\n<li><p>Fixed a regression in Django 3.1 that caused a crash of\n<a class=\"reference internal\" href=\"/en/dev/ref/models/expressions/#django.db.models.ExpressionWrapper\" title=\"django.db.models.ExpressionWrapper\"><code class=\"xref py py-class docutils literal notranslate\">ExpressionWrapper</code></a> with key transforms for\n<a class=\"reference internal\" href=\"/en/dev/ref/models/fields/#django.db.models.JSONField\" title=\"django.db.models.JSONField\"><code class=\"xref py py-class docutils literal notranslate\">JSONField</code></a> (<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/32096\">#32096</a>).</p></li>\n<li><p>Fixed a regression in Django 3.1 that caused a migrations crash on PostgreSQL\nwhen adding an\n<a class=\"reference internal\" href=\"/en/dev/ref/contrib/postgres/constraints/#django.contrib.postgres.constraints.ExclusionConstraint\" title=\"django.contrib.postgres.constraints.ExclusionConstraint\"><code class=\"xref py py-class docutils literal notranslate\">ExclusionConstraint</code></a> with key\ntransforms for <a class=\"reference internal\" href=\"/en/dev/ref/models/fields/#django.db.models.JSONField\" title=\"django.db.models.JSONField\"><code class=\"xref py py-class docutils literal notranslate\">JSONField</code></a> in <code class=\"docutils literal notranslate\">expressions</code>\n(<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/32096\">#32096</a>).</p></li>\n<li><p>Fixed a regression in Django 3.1 where\n<a class=\"reference internal\" href=\"/en/dev/ref/exceptions/#django.db.models.ProtectedError\" title=\"django.db.models.ProtectedError\"><code class=\"xref py py-exc docutils literal notranslate\">ProtectedError.protected_objects</code></a> and\n<a class=\"reference internal\" href=\"/en/dev/ref/exceptions/#django.db.models.RestrictedError\" title=\"django.db.models.RestrictedError\"><code class=\"xref py py-exc docutils literal notranslate\">RestrictedError.restricted_objects</code></a>\nattributes returned iterators instead of <a class=\"reference external\" href=\"https://docs.python.org/3/library/stdtypes.html#set\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\">set</code></a> of objects\n(<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/32107\">#32107</a>).</p></li>\n<li><p>Fixed a regression in Django 3.1.2 that caused incorrect form input layout on\nsmall screens in the admin change form view (<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/32069\">#32069</a>).</p></li>\n<li><p>Fixed a regression in Django 3.1 that invalidated pre-Django 3.1 password\nreset tokens (<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/32130\">#32130</a>).</p></li>\n<li><p>Added support for <code class=\"docutils literal notranslate\">asgiref</code> 3.3 (<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/32128\">#32128</a>).</p></li>\n<li><p>Fixed a regression in Django 3.1 that caused incorrect textarea layout on\nmedium-sized screens in the admin change form view with the sidebar open\n(<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/32127\">#32127</a>).</p></li>\n<li><p>Fixed a regression in Django 3.0.7 that didn’t use <code class=\"docutils literal notranslate\">Subquery()</code> aliases in\nthe <code class=\"docutils literal notranslate\">GROUP BY</code> clause (<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/32152\">#32152</a>).</p></li>\n</ul>\n</section>","rootId":"django-3-1-3-release-notes","toc":[{"title":"Bugfixes","anchor":"bugfixes","children":[]}],"breadcrumbs":[{"docname":"releases/index","title":"Release notes","url":"/en/dev/releases/"}],"prev":{"docname":"releases/3.1.4","title":"Django 3.1.4 release notes","url":"/en/dev/releases/3.1.4/"},"next":{"docname":"releases/3.1.2","title":"Django 3.1.2 release notes","url":"/en/dev/releases/3.1.2/"},"formats":{"html":"/en/dev/releases/3.1.3/","markdown":"/en/dev/releases/3.1.3.md","json":"/en/dev/releases/3.1.3.json"},"source":"https://github.com/django/django/blob/main/docs/releases/3.1.3.txt","official":"https://docs.djangoproject.com/en/dev/releases/3.1.3/","inVersions":["dev","6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1"],"inLocales":["en"]}