在使用admin创建用户时向django添加所需的电子邮件字段

时间:2013-03-08 22:37:30

标签: django user-administration

使用Django admin创建/添加用户时;这怎么可以定制?

例如,目前提示输入用户名和密码。但是,我想自定义它还有其他必填字段,例如'email'?

关于admin用户身份验证定制的django教程不清楚?

3 个答案:

答案 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中查找原始代码并修改以品尝。