You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Django自定义User模型无法在Admin后台注册问题求助

解决Django 2.0自定义User模型无法在Admin后台显示的问题

嘿,我看你已经跟着Django 2.0官方文档替换了自定义User模型,能创建账号也能登录,但Admin后台看不到用户对吧?十有八九是自定义模型没在Admin里正确注册,或者有些配置漏了,我给你一步步捋清楚怎么解决:

1. 先确认自定义User模型的完整定义

首先得保证你的sign_up/models.py里的模型是完整的,比如这样:

from django.contrib.auth.models import AbstractUser
from django.db import models

class CustomUser(AbstractUser):
    # 这里可以加你的自定义字段,比如手机号
    phone = models.CharField(max_length=11, blank=True, null=True)
    
    class Meta:
        verbose_name = "用户"
        verbose_name_plural = "用户"

2. 务必在settings.py里指定AUTH_USER_MODEL

这一步是替换自定义User模型的核心,你肯定已经加了,但再确认下项目根目录的settings.py里有这行:

AUTH_USER_MODEL = 'sign_up.CustomUser'

3. 重点!在Admin中注册自定义User模型

这应该是你遗漏的关键步骤!默认情况下Django Admin不会自动识别自定义的User模型,必须手动注册,而且要配合UserAdmin类才能显示完整的用户管理界面:

方式一:直接用默认的UserAdmin(适合没有自定义字段的情况)

sign_up/admin.py里加这段代码:

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

admin.site.register(CustomUser, UserAdmin)

方式二:自定义Admin类(如果有自定义字段要在Admin显示)

如果你的CustomUser加了自己的字段(比如上面的phone),想要在Admin后台编辑查看,就继承UserAdmin自定义:

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

class CustomUserAdmin(UserAdmin):
    # 列表页显示的字段
    list_display = ('username', 'email', 'phone', 'is_staff', 'is_active')
    # 编辑页的字段分组
    fieldsets = (
        (None, {'fields': ('username', 'password')}),
        ('个人信息', {'fields': ('first_name', 'last_name', 'email', 'phone')}),
        ('权限设置', {'fields': ('is_active', 'is_staff', 'is_superuser', 'groups', 'user_permissions')}),
        ('重要日期', {'fields': ('last_login', 'date_joined')}),
    )

admin.site.register(CustomUser, CustomUserAdmin)

4. 数据库迁移的注意点

如果你是中途替换的User模型(不是项目一开始就设置AUTH_USER_MODEL),那得清空原有数据库重新迁移,不然会有冲突:

python manage.py flush
python manage.py makemigrations
python manage.py migrate

如果是新项目一开始就配置了自定义User模型,直接正常执行迁移就行。

5. 最后验证

做完上面这些步骤,重启Django服务器,登录Admin后台,就能看到“用户”(或者你在Meta里设置的名称)的管理入口啦!


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

火山引擎 最新活动