Django中AUTH_USER_MODEL配置报错,求正确设置方法
解决Django自定义User模型的LookupError问题
首先咱们直接戳破问题根源:你的配置和模型的归属完全不匹配,加上模型本身不符合Django的要求,才导致了这个查找错误。我帮你一步步修正:
问题拆解
- 你的User模型实际放在
api这个app的models目录下,但模型Meta类里写了app_label="myapp",同时AUTH_USER_MODEL指定的是myapp.User,但你INSTALLED_APPS里根本没加myapp——Django当然找不到这个不存在的app! - 另外,你的User模型没有继承Django提供的用户基类(比如
AbstractUser),这会导致Django无法识别它为合法的用户模型。
正确设置步骤
1. 修正User模型代码
你的User模型属于apiapp,所以Meta里的app_label要改成api,而且必须继承Django的用户基类:
# backend/api/models/user.py from django.contrib.auth.models import AbstractUser class User(AbstractUser): # 在这里添加你的自定义字段(如果需要的话) class Meta: app_label = "api" # 对应INSTALLED_APPS里的app名称
2. 修正settings.py配置
把AUTH_USER_MODEL改成api.User,确保和模型所在的app一致:
# settings.py AUTH_USER_MODEL = 'api.User' # 格式:<app名称>.<模型类名> INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'api', # 这个已经添加,没问题 # 其他你的app... ]
3. 后续关键操作
- 如果是新项目:先运行
python manage.py makemigrations生成迁移文件,再执行python manage.py migrate完成数据库迁移,之后再运行showmigrations就不会报错了。 - 如果是已有迁移记录的旧项目:修改
AUTH_USER_MODEL会比较棘手,因为Django在第一次迁移后就锁定了用户模型。这种情况建议要么回滚到初始状态,要么重新创建新项目来使用自定义用户模型。
内容的提问来源于stack exchange,提问作者Dmitry Dyachkov
相关产品推荐
相关产品推荐

