# Django 5.2.8 documentation

# Django 1.9.2 versionsinformation

1 februari 2016

Django 1.9.2 åtgärdar en säkerhetsregression i 1.9 och flera buggar i 1.9.1. Den gör också en liten bakåtkompatibel förändring som förhoppningsvis inte påverkar några användare.

## Säkerhetsproblem: Användare med behörigheten ”change” men inte ”add” kan skapa objekt för `ModelAdmin` med `save_as=True`

Om en `ModelAdmin` använder `save_as=True` (inte standard), ger administratören ett alternativ när du redigerar objekt för att ”Spara som ny”. En regression i Django 1.9 förhindrade att den formulärinlämningen gav upphov till ett ”Permission Denied”-fel för användare utan ”add”-behörighet.

## Bakåtkompatibel ändring: `.py-tpl`-filer skrivs om i projekt/app-mallar

Tillägget av viss syntax för Djangos mallspråk till standardmallen för appar i Django 1.9 innebär att dessa filer nu har viss ogiltig Python-syntax. Detta orsakar svårigheter för paketeringssystem som ovillkorligen byte-kompilerar `*.py`-filer.

För att åtgärda detta används nu suffixet `.py-tpl` för de projekt- och appmallfiler som ingår i Django. Suffixet `.py-tpl` ersätts med `.py` av kommandona `startproject` och `startapp`. Till exempel kommer en mall med filnamnet `manage.py-tpl` att skapas som `manage.py`.

Skicka in ett ärende om du har en anpassad projektmall som innehåller `.py-tpl`-filer och tycker att detta beteende är problematiskt.

## Buggrättningar

- Åtgärdade en regression i `ConditionalGetMiddleware` som orsakade att `If-None-Match`-kontroller alltid returnerade HTTP 200 (#26024).

- Åtgärdade en regression som gjorde att objekten ”user-tools” visades på administratörens utloggningssida (#26035).

- Fixade en krasch i översättningssystemet när det aktuella språket inte har några översättningar (#26046).

- Åtgärdade en regression som gjorde att fel dag valdes när admin-kalenderwidgeten öppnades för tidszoner från GMT+0100 till GMT+1200 (#24980).

- Åtgärdade en regression i admins popup-fönster för redigering av relaterad modell som gjorde att ett undangömt värde visades i rullgardinsmenyn i det överordnade fönstret (#25997).

- Fixade en regression i 1.8.8 som orsakade felaktig indexhantering i migreringar på PostgreSQL när man lägger till `db_index=True` eller `unique=True` till ett `CharField` eller `TextField` som redan hade den andra specificerad, eller när man tar bort en av dem från ett fält som hade båda, eller när man lägger till `unique=True` till ett fält som redan listas i `unique_together` (#26034`).

- Åtgärdade en regression där definitionen av en relation på en abstrakt modells fält med hjälp av ett strängmodellnamn utan en app_label inte längre löste referensen till den abstrakta modellens app om modellen användes i en annan applikation (#25858).

- Fixade en krasch när du förstör en befintlig testdatabas på MySQL eller PostgreSQL (#26096).

- Fixad CSRF cookie-kontroll på POST-förfrågningar när `USE_X_FORWARDED_PORT=True` (#26094).

- Fixade en krasch i `QuerySet.order_by()` vid beställning av ett relationsfält i en `ManyToManyField` `through`-modell (#26092).

- Åtgärdade en regression som orsakade ett undantag när man gjorde databasfrågor på SQLite med mer än 2000 parametrar när `DEBUG` är `True` på distributioner som ökar `SQLITE_MAX_VARIABLE_NUMBER` kompileringstidsgränsen till över 2000, såsom Debian (#26063).

- Fixade en krasch när man använder en omvänd `OneToOneField` i `ModelAdmin.readonly_fields` (#26060).

- En krasch inträffade när kommandot `migrate` anropades i ett testfall med attributet `available_apps` som pekade på en applikation med migreringar inaktiverade med inställningen `MIGRATION_MODULES` (#26135).

- Återställde möjligheten för test- och felsökningsverktyg att avgöra vilken mall en nod kom ifrån, även under mallarv eller inkludering. Före Django 1.9 kunde felsökningsverktyg komma åt mallens ursprung från noden via `Node.token.source[0]`. Detta var ett odokumenterat, privat API. Ursprunget är nu tillgängligt direkt på varje nod med hjälp av attributet `Node.origin` (#25848`).

- Åtgärdade en regression i Django 1.8.5 som bröt kopiering av ett `SimpleLazyObject` med `copy.copy()` (#26122`).

- Inkluderade alltid `geometry_field` i GeoJSON-serialisatorns utdata oavsett parametern `fields` (#26138).

- Fixade kartwidgetarna `contrib.gis` när `USE_THOUSAND_SEPARATOR=True` används (#20415).

- Gjorde att ogiltiga formulär visade de initiala värdena för deras inaktiverade fält (#26129).