使用Django内置User模型注册用户,Admin面板不显示数据求助
解决Django注册用户不在Admin面板显示的问题
以下是几个常见原因和对应的排查、解决方法:
1. 用户数据未真正写入数据库
- 检查注册视图代码,确保创建
User实例后调用了user.save();如果用的是ModelForm,要在form.is_valid()验证通过后执行form.save(),漏写这一步数据根本不会存进数据库。 - 可以通过
python manage.py shell快速验证:执行from django.contrib.auth.models import User; print(User.objects.all()),如果输出里没有新注册的用户,说明确实没保存成功。
2. 用户的is_active字段为False
Django Admin默认只展示is_active=True的用户。如果注册时没显式设置user.is_active = True,用户会被存入数据库但Admin里看不到。
- 修复方法:在视图创建用户时添加
user.is_active = True,再调用save()。 - 也可以直接查看数据库
auth_user表中对应用户的is_active值,确认是否为1(代表True)。
3. Admin后台被自定义过滤了用户范围
如果项目里重写了UserAdmin,可能不小心限制了显示的用户范围:
- 检查项目的
admin.py,如果有类似下面的代码,要去掉过滤超级用户的逻辑:
from django.contrib.auth.admin import UserAdmin from django.contrib.auth.models import User class CustomUserAdmin(UserAdmin): def get_queryset(self, request): qs = super().get_queryset(request) # 注释或删除下面这行限制代码 # return qs.filter(is_superuser=True) return qs admin.site.unregister(User) admin.site.register(User, CustomUserAdmin)
4. 多数据库配置导致数据存错库
如果项目配置了多个数据库,要确认视图里保存用户时用的是默认数据库,没有指定其他数据库(比如user.save(using='other_db')),否则Admin从默认库查不到数据。
内容的提问来源于stack exchange,提问作者Prashant sharma
相关产品推荐
相关产品推荐

