You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DRF admin面板创建用户未调用自定义User Manager问题求解

问题原因及排查方案

1 基础配置校验(优先确认)

虽然命令行python manage.py createsuperuser能触发打印说明大部分配置正确,仍需检查自定义用户模型的管理器绑定是否正确:

class CustomUser(AbstractBaseUser, PermissionsMixin):
    # 你的自定义字段定义
    email = models.EmailField(unique=True)
    # 必须显式指定自定义管理器
    objects = MyUserManager()
    # USERNAME_FIELD、REQUIRED_FIELDS等配置
    USERNAME_FIELD = 'email'

2 最常见问题:Admin注册逻辑未适配

这是你遇到的问题的概率最高的原因:
Django默认的ModelAdmin新增实例时,会直接实例化模型、赋值后调用模型的save()方法,不会主动调用自定义管理器的create_user/create_superuser方法。而createsuperuser命令是官方明确实现为调用用户模型管理器的create_superuser方法,因此只有命令行能触发打印。

你需要在应用的admin.py中继承Django自带的UserAdmin注册自定义用户,UserAdmin内部已经封装了创建用户时调用管理器对应方法的逻辑,示例代码如下:

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from .models import CustomUser

class CustomUserAdmin(UserAdmin):
    # 根据你的自定义字段调整新增用户页的字段
    add_fieldsets = (
        (None, {
            'classes': ('wide',),
            'fields': ('email', 'password1', 'password2', 'is_staff', 'is_superuser')}
        ),
    )
    # 按需调整列表页、编辑页的字段配置
    list_display = ('email', 'is_staff', 'is_superuser')
    fieldsets = UserAdmin.fieldsets 

admin.site.register(CustomUser, CustomUserAdmin)

如果你之前是直接用admin.site.register(CustomUser)注册,没有绑定适配的CustomUserAdmin,调整后即可触发管理器的对应方法。

3 其他排查点

  • 确认settings.py中AUTH_USER_MODEL = "你的应用名.CustomUser"配置无拼写错误
  • 检查是否重写了CustomUser的save方法,是否有逻辑覆盖了管理器的调用逻辑

内容的提问来源于stack exchange,提问作者Software

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 06:00:05