Через шесть лет после появления тикета с предложением возможности использования своей модели вместо штатной django.contrib.auth.models.User и тысяч постов с идеями использования дополнительной модели профилей случилось чудо: https://github.com/django/django/commit/70a0de37d132e5f1514fb939875f69649f103124
Теперь модель пользователя указывается в настройках проекта:
AUTH_USER_MODEL = 'auth.User'
А для создания ForeignKey к модели пользователя предлагают использовать следующий способ:
user = models.ForeignKey(settings.AUTH_USER_MODEL)
При этом отдельно рекомендуется обдумать необходимость хранения всей информации пользователя, не относящейся к авторизации, в одной модели. Возможно, лучшим способом хранения таких данных будет старый добрый способ с дополнительными моделями; это позволит каждому приложению иметь свою информацию о пользователе без риска конфликтов с другими приложениями.
Остальная документация по новой функциональности уже есть на сайте: docs.djangoproject.com/en/dev/topics/auth/#customizing-the-user-model
Те, кому не терпится опробовать долгожданную фичу в действии, уже могут использовать trunk репозитория, любителям стабильности же придется ждать выхода django 1.5.
Автор: svartalf