Django 1.11.3 release notes

Under development

Django 1.11.3 fixes several bugs in 1.11.2.

Bugfixes

  • Removed an incorrect deprecation warning about a missing renderer argument if a Widget.render() method accepts **kwargs (#28265).
  • Fixed a regression causing Model.__init__() to crash if a field has an instance only descriptor (#28269).
  • Fixed an incorrect DisallowedModelAdminLookup exception when using a nested reverse relation in list_filter (#28262).
  • Fixed admin’s FieldListFilter.get_queryset() crash on invalid input (#28202).
  • Fixed invalid HTML for a required AdminFileWidget (#28278).
  • Fixed model initialization to set the name of class-based model indexes for models that only inherit models.Model (#28282).
  • Fixed crash in admin’s inlines when a model has an inherited non-editable primary key (#27967).
  • Fixed QuerySet.union(), intersection(), and difference() when combining with an EmptyQuerySet (#28293).
  • Prevented Paginator’s unordered object list warning from evaluating a QuerySet (#28284).
  • Fixed the value of redirect_field_name in LoginView’s template context. It’s now an empty string (as it is for the original function-based login() view) if the corresponding parameter isn’t sent in a request (in particular, when the login page is accessed directly) (#28229).
  • Prevented attribute values in the django/forms/widgets/attrs.html template from being localized so that numeric attributes (e.g. max and min) of NumberInput work correctly (#28303).
  • Removed casting of the option value to a string in the template context of the CheckboxSelectMultiple, NullBooleanSelect, RadioSelect, SelectMultiple, and Select widgets (#28176). In Django 1.11.1, casting was added in Python to avoid localization of numeric values in Django templates, but this made some use cases more difficult. Casting is now done in the template using the |stringformat:'s' filter.
  • Prevented a primary key alteration from adding a foreign key constraint if db_constraint=False (#28298).