如何在Django admin添加用户页面添加邮箱

How to add email in Django amin Add user Page

我创建了一个 CustomUser(AbstractUser) 模型,在这个模型中,我想在管理员添加用户中添加电子邮件 ID 字段 Page.Currently 默认情况下,首先我们可以输入用户名和密码,在创建用户名和密码后,我们被重定向到另一个可用电子邮件字段的页面 我希望添加用户页面上的此电子邮件字段可行吗?

在您应用的 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)

在管理员 django 上已经有一个默认的 BaseUserAdmin,它有 2 个部分,添加表单和更改表单,这两个表单都是从字段集(更改表单)和 add_fieldsets(添加表单)创建的) 要在添加表单上添加字段或删除字段,请覆盖 BaseUserAdmin add_fieldsets:

from django.contrib.auth.admin import UserAdmin

class CustomUserAdmin(UserAdmin):

    add_fieldsets = UserAdmin.add_fieldsets + (
        (None, {'fields': ('email',)}),
    )

If you are using a custom ModelAdmin which is a subclass of django.contrib.auth.admin.UserAdmin, then you need to add your custom fields to fieldsets (for fields to be used in editing users) and to add_fieldsets (for fields to be used when creating a user)

第二种方法:覆盖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-users-and-django-contrib-admin