Django 1.8.1 release notes

May 1, 2015

Django 1.8.1 fixes several bugs in 1.8 and includes some optimizations in the migrations framework.

Bugfixes

  • Added support for serializing timedelta objects in migrations (#%s24566).
  • Restored proper parsing of the testserver command’s positional arguments (fixture names) (#%s24571).
  • Prevented TypeError in translation functions check_for_language() and get_language_bidi() when translations are deactivated (#%s24569).
  • Fixed squashmigrations command when using SeparateDatabaseAndState (#%s24278).
  • Stripped microseconds from datetime values when using an older version of the MySQLdb DB API driver as it does not support fractional seconds (#%s24584).
  • Fixed a migration crash when altering ManyToManyFields (#%s24513).
  • Fixed a crash with QuerySet.update() on foreign keys to one-to-one fields (#%s24578).
  • Fixed a regression in the model detail view of admindocs when a model has a reverse foreign key relation (#%s24624).
  • Prevented arbitrary file inclusions in admindocs (#%s24625).
  • Fixed a crash with QuerySet.update() on foreign keys to instances with uuid primary keys (#%s24611).
  • Fixed database introspection with SQLite 3.8.9 (released April 8, 2015) (#%s24637).
  • Updated urlpatterns examples generated by startproject to remove usage of referencing views by dotted path in django.conf.urls.url() which is deprecated in Django 1.8 (#%s24635).
  • Fixed queries where an expression was referenced in order_by(), but wasn’t part of the select clause. An example query is qs.annotate(foo=F('field')).values('pk').order_by('foo')) (#%s24615).
  • Fixed a database table name quoting regression (#%s24605).
  • Prevented the loss of null/not null column properties during field alteration of MySQL databases (#%s24595).
  • Fixed JavaScript path of contrib.admin’s related field widget when using alternate static file storages (#%s24655).
  • Fixed a migration crash when adding new relations to models (#%s24573).
  • Fixed a migration crash when applying migrations with model managers on Python 3 that were generated on Python 2 (#%s24701).
  • Restored the ability to use iterators as queryset filter arguments (#%s24719).
  • Fixed a migration crash when renaming the target model of a many-to-many relation (#%s24725).
  • Removed flushing of the test database with test --keepdb, which prevented apps with data migrations from using the option (#%s24729).
  • Fixed makemessages crash in some locales (#%s23271).
  • Fixed help text positioning of contrib.admin fields that use the ModelAdmin.filter_horizontal and filter_vertical options (#%s24676).
  • Fixed AttributeError: function 'GDALAllRegister' not found error when initializing contrib.gis on Windows.

Optimizations

  • Changed ModelState to deepcopy fields instead of deconstructing and reconstructing (#%s24591). This speeds up the rendering of model states and reduces memory usage when running manage.py migrate (although other changes in this release may negate any performance benefits).