Django-admin Создание пользователя на пользовательской модели пользователя
При использовании модели аутентификации Django по умолчанию (django.contrib.auth.models.User
), На странице администратора Django есть отдельный рабочий процесс для создания объекта пользователя. Администратора сначала спрашивают только имя пользователя и пароль нового пользователя. После предоставления сведений пользователь создается (с хэшированным паролем), и другие поля могут быть добавлены для пользователя в качестве редактирования.
Но когда AUTH_USER_MODEL
является настраиваемой моделью пользователя, то все эти полномочия теряются в панели администратора, и вы не можете создавать пользователей или изменять их пароли с помощью панели администратора, поскольку в этом случае пароли по умолчанию не хэшируются.
Как это исправить и создавать пользователей из админки? Просто простой трюк.
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from users import models
admin.site.register(models.MyUser, UserAdmin)
В приведенном выше коде мы только что зарегистрировали нашу модель User для использования UserAdmin
класс, который имеет конфигурации для форм добавления и редактирования.
Если сейчас зайти в панель администратора и нажать на Add User
вы должны увидеть другую форму, содержащую только имя пользователя и пароль.
И когда вы перейдете к форме редактирования пользователя, вы должны увидеть, что пароль теперь не текстовое поле, а метка, содержащая хэш, соль и т. Д. У вас также будет ссылка ниже для изменения пароля пользователя.
После этого изменения вам не нужно переходить в оболочку, чтобы каждый раз создавать новых пользователей в вашем приложении.