Добавление обязательного поля электронной почты в django при создании пользователей с правами администратора
При создании / добавлении пользователя с помощью администратора Django; как это можно настроить?
Например, в настоящее время запрашиваются имя пользователя и пароль. Тем не менее, я хотел бы настроить это, чтобы также иметь другие обязательные поля, такие как "электронная почта"?
Учебник по django не понятен в настройке аутентификации пользователя-администратора?
3 ответа
Поместите это в вашем models.py.
from django.contrib.auth.models import User
User._meta.get_field('email').blank = False
Затем запустите makemigrations. Тогда беги мигрируй.
Готово!
Редактировать: Спасибо за ребята upvote!
Пример добавления электронного письма в форму при создании пользователя. В проект admin.py добавлено следующее:
enter code here
из форм импорта Django
from django.contrib import admin
from django.contrib.auth import admin as upstream
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
from django.contrib.auth.models import Group, User
from django.utils.translation import ugettext, ugettext_lazy as _
class UserAdmin(upstream.UserAdmin):
fieldsets = (
(None, {'fields': ('username', 'password','email')}),
(_('Personal info'), {'fields': ('first_name', 'last_name')}),
(_('Permissions'), {'fields': ('is_active', 'is_staff', 'is_superuser',
'groups', 'user_permissions')}),
(_('Important dates'), {'fields': ('last_login', 'date_joined')}),
)
add_fieldsets = (
(None, {
'classes': ('wide',),
'fields': ('username', 'password1', 'password2', 'email')}
),
)
form = UserChangeForm
add_form = UserCreationForm
try:
admin.site.unregister(User)
except NotRegistered:
pass
admin.site.register(User, UserAdmin)
Вот как вы можете настроить пользователя admin:
from django.contrib import admin
from django.contrib.auth import admin as upstream
# custom admin class for the User model, subclassing Django's one
class UserAdmin(upstream.UserAdmin):
add_form_template = ...
add_form = ...
add_fieldsets = ...
# unregister any existing admin for the User model and register mine
try:
admin.site.unregister(User)
except NotRegistered:
pass
admin.site.register(User, UserAdmin)
Части, которые я оставил ...
это настройки, которые вам нужно сделать, чтобы изменить способ, которым администратор запрашивает создание пользователя.
Ищите оригинальный код в django/contrib/auth/admin.py
и изменить по вкусу.