使用Django admin创建/添加用户时;这怎么可以定制?
例如,目前提示输入用户名和密码。但是,我想自定义它还有其他必填字段,例如'email'?
关于admin用户身份验证定制的django教程不清楚?
答案 0 :(得分:5)
将它放在你的models.py。
中from django.contrib.auth.models import User
User._meta.get_field('email').blank = False
然后运行makemigrations。 然后运行migrate。
完成!
编辑:感谢upvote家伙们!
答案 1 :(得分:4)
在创建用户时向表单添加电子邮件的示例。在项目admin.py中添加了以下内容:
来自django import forms的 enter code here
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)
答案 2 :(得分:0)
这是您可以自定义用户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
中查找原始代码并修改以品尝。