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

自定义User模型后Django Admin无法显示用户表求助

解决Django自定义User模型在Admin中不显示的问题

你的问题核心在于admin.py的注册语法错误,同时为了让自定义用户在Admin后台正常显示并支持完整操作,需要配套配置UserAdmin类,具体修复步骤如下:

步骤1:修正Admin注册逻辑

你当前的admin.register(User)写法不符合Django Admin的注册规范,正确的实现方式有两种,推荐搭配自定义UserAdmin类来优化后台体验:

写法一:使用装饰器注册

from django.contrib import admin
from django.contrib.auth import get_user_model
from django.contrib.auth.admin import UserAdmin

User = get_user_model()

@admin.register(User)
class CustomUserAdmin(UserAdmin):
    # 配置后台列表显示的字段
    list_display = ('email', 'is_staff', 'is_active')
    # 配置可筛选的字段
    list_filter = ('is_staff', 'is_active')
    # 配置详情页的字段分组
    fieldsets = (
        (None, {'fields': ('email', 'password')}),
        ('权限设置', {'fields': ('is_staff', 'is_active', 'is_superuser')}),
    )
    # 配置添加用户页面的字段
    add_fieldsets = (
        (None, {
            'classes': ('wide',),
            'fields': ('email', 'password1', 'password2', 'is_staff', 'is_active')}
        ),
    )
    search_fields = ('email',)
    ordering = ('email',)

写法二:直接调用register方法

from django.contrib import admin
from django.contrib.auth import get_user_model
from django.contrib.auth.admin import UserAdmin

User = get_user_model()

class CustomUserAdmin(UserAdmin):
    list_display = ('email', 'is_staff', 'is_active')
    list_filter = ('is_staff', 'is_active')
    fieldsets = (
        (None, {'fields': ('email', 'password')}),
        ('权限设置', {'fields': ('is_staff', 'is_active', 'is_superuser')}),
    )
    add_fieldsets = (
        (None, {
            'classes': ('wide',),
            'fields': ('email', 'password1', 'password2', 'is_staff', 'is_active')}
        ),
    )
    search_fields = ('email',)
    ordering = ('email',)

admin.site.register(User, CustomUserAdmin)

关键说明

  • 必须继承UserAdmin类:否则自定义用户模型无法在Admin中显示密码设置表单、权限管理等核心功能
  • 字段配置可按需调整:list_display、fieldsets等参数是为了优化后台显示体验,你可以根据业务需求增删字段
  • 原注册写法无效原因:单独调用admin.register(User)不符合语法要求,只有作为装饰器使用或传入admin.site.register()才会生效

验证操作

  1. 保存修改后的admin.py
  2. 重启Django开发服务器
  3. 刷新Admin后台页面,即可看到用户表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 03:27:16