如何在Django amin添加用户页面中添加电子邮件



我创建了一个CustomUser(AbstractUser(模型,在这个模型中,我想在admin add User Page中添加电子邮件id字段。目前默认情况下,首先我们可以输入用户名和密码,创建用户名和密码后,我们会重定向到另一个有电子邮件字段的页面。我希望在添加用户页面上有这个电子邮件字段,这可能吗。?

在admin django上已经有了默认的BaseUserAdmin,它有两个部分,添加表单和更改表单,这两个表单都是从fieldset(更改表单(和add_fieldset(添加表单(创建的要在添加表单上添加字段或删除字段,请覆盖BaseUserAdmin add_fieldsets:

from django.contrib.auth.admin import UserAdmin
class CustomUserAdmin(UserAdmin):
add_fieldsets = UserAdmin.add_fieldsets + (
(None, {'fields': ('email',)}),
)

如果您使用的是自定义ModelAdmin,它是django.contrib.auth.admin.UserAdmin,则需要添加自定义字段到字段集(用于编辑用户时使用的字段(和add_fieldsets(用于创建用户时要使用的字段(

第二种方法:重写add_fieldsets属性本身:

class CustomUserAdmin(UserAdmin):

# add_fieldsets is not a standard ModelAdmin attribute. UserAdmin
# overrides get_fieldsets to use this attribute when creating a user.
add_fieldsets = (
(None, {
'classes': ('wide',),
'fields': ('username', 'email', 'password1', 'password2'),
}),
)

文件:https://docs.djangoproject.com/en/3.1/topics/auth/customizing/#custom-用户和django contrib管理员

在应用程序的admin.py中,创建一个ModelAdmin并使用fields属性在视图中包括电子邮件字段。

示例:

from django.contrib import admin
from myproject.myapp.models import CustomUser
class CustomUserAdmin(admin.ModelAdmin):
fields = ('username', 'password', 'email')
admin.site.register(CustomUser,CustomUserAdmin)

最新更新