Django doesn't provide much index functionality and adding indexes to
your database manually may be required for something like this or
performance.
Whenever possible update the related code with comments about the
indexes that exist in the database.
Yep. Notice my response that you quoted. Manually add the unique index
to your database in addition to overriding the forms.
Just because there's no easy way to do something in Django doesn't mean
there's something wrong with Django. Nor does it mean that your
requirements are wrong. It just means you have to use your developer skills.
Incidentally, the auth.models.User model is a subject of a lot of debate
and inconvenience for a lot of people, and if you check out Django's
Trac instance and the history of django-developers you'll see that
people are working on changing it. Not that it will help you in this
case, but perhaps you could read up on the threads and see if you want
to get involved in the work.
Shawn