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

Django Admin无法识别超级用户问题求助

解决自定义User模型后Django Admin登录失败的问题

核心问题分析

你的自定义User模型设置了USERNAME_FIELD = 'email',但未完成关键配置,导致Django Admin无法正确识别用户,再加上is_active默认值为False,直接导致账号处于未激活状态,触发登录失败提示。


分步解决步骤

1. 在settings.py中指定自定义用户模型

必须明确告诉Django使用你的自定义User模型,添加以下配置:

# settings.py
AUTH_USER_MODEL = '你的应用名.User'

替换你的应用名为实际包含User模型的应用名称,比如accounts.User

2. 激活超级用户账号

你的模型中is_active默认是False,创建超级用户时账号会处于未激活状态,可通过Django Shell手动激活:
运行命令进入shell:

python manage.py shell

执行激活代码:

from 你的应用名.models import User
user = User.objects.get(email='你的超级用户邮箱')
user.is_active = True
user.save()

如果还未创建大量用户,也可以直接修改模型默认值,避免后续用户重复踩坑:

# models.py
is_active = models.BooleanField(default=True)

修改后执行迁移:

python manage.py makemigrations
python manage.py migrate

3. 在admin.py中正确注册自定义User模型

默认Admin配置适配原生User模型,需要注册自定义模型并调整Admin显示逻辑:

# admin.py
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from .models import User

class CustomUserAdmin(UserAdmin):
    # 适配email作为登录字段的Admin配置
    fieldsets = (
        (None, {'fields': ('email', 'password')}),
        ('个人信息', {'fields': ('username',)}),
        ('权限配置', {'fields': ('is_active', 'is_staff', 'is_superuser', 'groups', 'user_permissions')}),
        ('关键日期', {'fields': ('last_login', 'date_joined')}),
    )
    add_fieldsets = (
        (None, {
            'classes': ('wide',),
            'fields': ('email', 'username', 'password1', 'password2', 'is_active', 'is_staff', 'is_superuser'),
        }),
    )
    list_display = ('email', 'username', 'is_staff', 'is_active')
    search_fields = ('email', 'username')
    ordering = ('email',)

admin.site.register(User, CustomUserAdmin)

4. 重新创建超级用户(可选)

如果之前的超级用户配置存在遗留问题,可删除后重新创建:

python manage.py createsuperuser

创建时确保输入正确的邮箱,若模型is_active默认值已改为True,无需再手动激活。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 00:22:03