Django 3.2.1 release notes

4 maj 2021

Django 3.2.1 åtgärdar ett säkerhetsproblem och flera buggar i 3.2.

CVE-2021-31542: Möjlig katalogtraversering via uppladdade filer

MultiPartParser, UploadedFile och FieldFile tillät katalogöverskridanden via uppladdade filer med lämpligt utformade filnamn.

För att minska denna risk tillämpas nu striktare rensning av basnamn och sökvägar.

Buggrättningar

  • Korrigerad detektering av GDAL 3.2 på Windows (#32544).

  • Åtgärdat ett fel i Django 3.2 där underklasser av BigAutoField och SmallAutoField inte var tillåtna för DEFAULT_AUTO_FIELD-inställningen (#32620).

  • Åtgärdade en regression i Django 3.2 som orsakade en krasch av QuerySet.values()/values_list() efter QuerySet.union(), intersection() och difference() när den beställdes av ett oannoterat fält (#32627).

  • Återställde, efter en regression i Django 3.2, visning av ett undantagsmeddelande på den tekniska 404-felsökningssidan (#32637).

  • Åtgärdat ett fel i Django 3.2 där en systemkontroll skulle krascha på en omvänd ett-till-ett-relation i CheckConstraint.check eller UniqueConstraint.condition (#32635`).

  • Åtgärdade en regression i Django 3.2 som orsakade en krasch av ModelAdmin.search_fields vid sökning mot fraser med obalanserade citattecken (#32649).

  • Åtgärdat ett fel i Django 3.2 där fel vid variabeluppslagning loggades och renderade sitemap-mallen om alternativ inte definierades (#32648).

  • Åtgärdade en regression i Django 3.2 som orsakade en krasch när man kombinerade Q()-objekt som innehåller booleska uttryck (#32548).

  • Åtgärdade en regression i Django 3.2 som orsakade en krasch av QuerySet.update() på en queryset som beställts av ärvda eller sammanfogade fält på MySQL och MariaDB (#32645`).

  • Åtgärdade en regression i Django 3.2 som orsakade en krasch vid avkodning av ett cookie-värde, som används av django.contrib.messages.storage.cookie.CookieStorage, i formatet före Django 3.2 (#32643`).

  • Åtgärdat en regression i Django 3.2 som stoppade shift-tangentmodifieraren att välja flera rader i admin-ändringslistan (#32647).

  • Åtgärdat ett fel i Django 3.2 där en systemkontroll kraschade på STATICFILES_DIRS-inställningen med en lista med 2-tuples av (prefix, path) (#32665).

  • Fixade en långvarig bugg som involverade queryset bitvis kombination när den användes med underfrågor som började manifesteras i Django 3.2, på grund av en separat fix som använder Exists för att ``exclude() `` flervärdiga relationer (#32650).

  • Åtgärdat en bugg i Django 3.2 där fel vid variabeluppslagning loggades vid rendering av vissa adminmallar (#32681).

  • Fixade en bugg i Django 3.2 där en admin-ändringslista kraschade när man tog bort objekt filtrerade mot flervärdesrelationer (#32682). Den administrativa ändringslistan använder nu Exists() istället för QuerySet.distinct() eftersom det inte är tillåtet att anropa delete() efter distinct() i Django 3.2 för att hantera en dataförlustrisk.

  • Fixade en regression i Django 3.2 där den anropande processmiljön inte skulle skickas till kommandot dbshell på PostgreSQL (:biljett:`32687`).

  • Åtgärdat en prestandaregression i Django 3.2 när man bygger komplexa filter med underfrågor (#32632). Som en bieffekt tas det privata API:et för att kontrollera django.db.sql.query.Query jämlikhet bort.