# Upgrade Django v1.11.x

## Highlights

Django 1.11 was a [long-term support](https://docs.djangoproject.com/en/dev/internals/release-process/#term-Long-term-support-release) release. [Extended support](https://www.djangoproject.com/download/#ft2) ended on 2020-04-01.

With most people having either moved to Python 3 or working on moving, this is the last version of Django that will support Python 2.

Until this release, there weren't a lot of options for adding indexes to model fields. You basically had single column indexes, single column unique indexes, and multi-column indexes. In Django 1.11, there are now [class-based model indexes](https://docs.djangoproject.com/en/2.1/releases/1.11/#class-based-model-indexes). These are a bit more flexible and make way for some neat [PostgreSQL specific](https://docs.djangoproject.com/en/2.1/ref/contrib/postgres/indexes/#module-django.contrib.postgres.indexes) index options.

The Django admin `date_hierarchy` feature can now reference fields across relationships. It's a smaller feature, but one we've all run into at least once in the past.

This release also [deprecates several features](https://docs.djangoproject.com/en/2.1/releases/1.11/#features-deprecated-in-1-11) you may be using. If you're hopping from LTS to LTS, you'll want to make plans for changing how you are using these features before it's time to upgrade.

## Upgrade Gotchas

- `pytz` is now a required dependency, which isn't all that surprising but is definitely worth noting.
- There are also several GeoDjango (aka `django.contrib.gis`) changes that might get in your way when upgrading from v1.10.
- `django.forms.Widget.render` added the [renderer](https://docs.djangoproject.com/en/1.11/ref/forms/widgets/#django.forms.Widget.render) keyword.

Source: https://upgradedjango.com/1.11/
