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

Django自定义用户模型创建超级管理员后无法登录后台求助

问题解决:自定义用户模型无法登录Django Admin

核心原因

使用自定义用户模型时,未配置适配的UserAdmin类,导致Django Admin无法正确识别超级用户的权限状态;另外phone_number字段未设置允许为空,可能在创建用户时存在隐性异常。

解决方案

1. 修正Account模型的phone_number字段

在models.py中,给phone_number添加blank=True,避免创建用户时因必填字段缺失导致异常:

phone_number = models.CharField(max_length=50, blank=True)

2. 自定义AccountAdmin类适配Admin界面

修改admin.py,替换默认的模型注册方式,使用自定义的UserAdmin子类:

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

class AccountAdmin(UserAdmin):
    # 配置Admin列表显示的字段
    list_display = ('email', 'username', 'first_name', 'last_name', 'is_staff', 'date_joined')
    # 配置可点击跳转的字段
    list_display_links = ('email', 'username')
    # 配置只读字段
    readonly_fields = ('date_joined', 'last_login')
    # 配置排序方式
    ordering = ('-date_joined',)

    # 移除默认UserAdmin中依赖的groups和user_permissions字段配置
    filter_horizontal = ()
    list_filter = ()
    fieldsets = ()

admin.site.register(Account, AccountAdmin)

3. 重新迁移并创建超级用户

执行以下命令,确保模型变更生效并重新创建超级用户:

python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser

额外检查点

  • 确认登录时输入的邮箱与创建超级用户时的邮箱一致(注意normalize_email会将邮箱域名转为小写,需匹配规范化后的邮箱)
  • 验证超级用户权限字段状态:通过Django Shell执行from accounts.models import Account; user = Account.objects.get(email='你的邮箱'); print(user.is_staff, user.is_admin, user.is_active),确保三个字段均返回True

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 01:40:55