- PVSM.RU - https://www.pvsm.ru -
Через шесть лет после появления тикета [1] с предложением возможности использования своей модели вместо штатной django.contrib.auth.models.User и тысяч [2] постов [3] с [4] идеями [5] использования дополнительной модели профилей случилось чудо: https://github.com/django/django/commit/70a0de37d132e5f1514fb939875f69649f103124 [6]
Теперь модель пользователя указывается в настройках проекта:
AUTH_USER_MODEL = 'auth.User'
А для создания ForeignKey к модели пользователя предлагают использовать следующий способ:
user = models.ForeignKey(settings.AUTH_USER_MODEL)
При этом отдельно рекомендуется обдумать необходимость хранения всей информации пользователя, не относящейся к авторизации, в одной модели. Возможно, лучшим способом хранения таких данных будет старый добрый способ с дополнительными моделями; это позволит каждому приложению иметь свою информацию о пользователе без риска конфликтов с другими приложениями.
Остальная документация по новой функциональности уже есть на сайте: docs.djangoproject.com/en/dev/topics/auth/#customizing-the-user-model [7]
Те, кому не терпится опробовать долгожданную фичу в действии, уже могут использовать trunk репозитория, любителям стабильности же придется ждать выхода django 1.5.
Автор: svartalf
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/django-2/16059
Ссылки в тексте:
[1] тикета: https://code.djangoproject.com/ticket/3011
[2] тысяч: http://habrahabr.ru/post/118468/
[3] постов: http://www.b-list.org/weblog/2006/jun/06/django-tips-extending-user-model/
[4] с: http://www.turnkeylinux.org/blog/django-profile
[5] идеями: http://softwaremaniacs.org/blog/2007/03/07/auto-one-to-one-field/
[6] https://github.com/django/django/commit/70a0de37d132e5f1514fb939875f69649f103124: https://github.com/django/django/commit/70a0de37d132e5f1514fb939875f69649f103124
[7] docs.djangoproject.com/en/dev/topics/auth/#customizing-the-user-model: https://docs.djangoproject.com/en/dev/topics/auth/#customizing-the-user-model
Нажмите здесь для печати.