{"title":"Django 2.1.1 release notes","version":"dev","locale":"en","docname":"releases/2.1.1","url":"/en/dev/releases/2.1.1/","canonical":"https://djangodocs.dev/en/dev/releases/2.1.1/","summary":"Django 2.1.1 fixes several bugs in 2.1. Fixed a race condition in QuerySet.update_or_create() that could result in data loss (#29499).","html":"<h1>Django 2.1.1 release notes<a class=\"heading-anchor\" href=\"#django-2-1-1-release-notes\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p><em>August 31, 2018</em></p>\n<p>Django 2.1.1 fixes several bugs in 2.1.</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 race condition in <code class=\"docutils literal notranslate\">QuerySet.update_or_create()</code> that could result\nin data loss (<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/29499\">#29499</a>).</p></li>\n<li><p>Fixed a regression where <code class=\"docutils literal notranslate\">QueryDict.urlencode()</code> crashed if the dictionary\ncontains a non-string value (<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/29627\">#29627</a>).</p></li>\n<li><p>Fixed a regression in Django 2.0 where using <code class=\"docutils literal notranslate\">manage.py test --keepdb</code>\nfails on PostgreSQL if the database exists and the user doesn’t have\npermission to create databases (<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/29613\">#29613</a>).</p></li>\n<li><p>Fixed a regression in Django 2.0 where combining <code class=\"docutils literal notranslate\">Q</code> objects with <code class=\"docutils literal notranslate\">__in</code>\nlookups and lists crashed (<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/29643\">#29643</a>).</p></li>\n<li><p>Fixed translation failure of <code class=\"docutils literal notranslate\">DurationField</code>’s “overflow” error message\n(<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/29623\">#29623</a>).</p></li>\n<li><p>Fixed a regression where the admin change form crashed if the user doesn’t\nhave the ‘add’ permission to a model that uses <code class=\"docutils literal notranslate\">TabularInline</code>\n(<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/29637\">#29637</a>).</p></li>\n<li><p>Fixed a regression where a <code class=\"docutils literal notranslate\">related_query_name</code> reverse accessor wasn’t set\nup when a <code class=\"docutils literal notranslate\">GenericRelation</code> is declared on an abstract base model\n(<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/29653\">#29653</a>).</p></li>\n<li><p>Fixed the test client’s JSON serialization of a request data dictionary for\nstructured content type suffixes (<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/29662\">#29662</a>).</p></li>\n<li><p>Made the admin change view redirect to the changelist view after a POST if\nthe user has the ‘view’ permission (<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/29663\">#29663</a>).</p></li>\n<li><p>Fixed admin change view crash for view-only users if the form has an extra\nform field (<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/29682\">#29682</a>).</p></li>\n<li><p>Fixed a regression in Django 2.0.5 where <code class=\"docutils literal notranslate\">QuerySet.values()</code> or\n<code class=\"docutils literal notranslate\">values_list()</code> after combining querysets with <code class=\"docutils literal notranslate\">extra()</code> with\n<code class=\"docutils literal notranslate\">union()</code>, <code class=\"docutils literal notranslate\">difference()</code>, or <code class=\"docutils literal notranslate\">intersection()</code> crashed due to\nmismatching columns (<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/29694\">#29694</a>).</p></li>\n<li><p>Fixed crash if <code class=\"docutils literal notranslate\">InlineModelAdmin.has_add_permission()</code> doesn’t accept the\n<code class=\"docutils literal notranslate\">obj</code> argument (<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/29723\">#29723</a>).</p></li>\n</ul>\n</section>","rootId":"django-2-1-1-release-notes","toc":[{"title":"Bugfixes","anchor":"bugfixes","children":[]}],"breadcrumbs":[{"docname":"releases/index","title":"Release notes","url":"/en/dev/releases/"}],"prev":{"docname":"releases/2.1.2","title":"Django 2.1.2 release notes","url":"/en/dev/releases/2.1.2/"},"next":{"docname":"releases/2.1","title":"Django 2.1 release notes","url":"/en/dev/releases/2.1/"},"formats":{"html":"/en/dev/releases/2.1.1/","markdown":"/en/dev/releases/2.1.1.md","json":"/en/dev/releases/2.1.1.json"},"source":"https://github.com/django/django/blob/main/docs/releases/2.1.1.txt","official":"https://docs.djangoproject.com/en/dev/releases/2.1.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","2.1"],"inLocales":["en"]}