Project Rationale

While working together in late 2016, Russell Keith-Magee and Andrew Pinkham— original authors of the project—discussed the repetitive nature of rebuilding a best-practices email-based User model in new Django projects. The two were tired of redoing the same work, and decided to open-source code based on what they’d learned previously.

Russell’s Red User, Blue User, MyUser, auth.User talk from DjangoCon US 2013 and PyCon AU 2017 (video below) provides a breakdown of the problems with Django’s existing approach to identity-handling, as well as an introduction to using custom User models in Django.

In turn, Andrew wished for more modularity in Django’s existing auth codebase. Having described the process of creating custom User models in his book, Django Unleashed, Andrew felt that developers should be able to import and compose classes to properly integrate with Django’s permissions and/or admin. The two set out to build a project that would:

  1. provide a User model that authenticates via email (not username)

  2. provide a User model with global identity name-fields (full name and short name, rather than the limited anglo-centric first and last name)

  3. provide mix-in classes to allow developers to easily compose a new User model.

The project is originally based on the app that Russell had built over a decade of working in Django. Andrew took what he had learned from Django Unleashed and his consulting experience, and integrated it into the project. The result is a User model that can be used out of the box (see Quickstart: Using Improved User for details) and a set of mix-in classes to allow for creation of new User models (notably, the DjangoIntegrationMixin).

We hope you find our work useful!