Django中添加AUTH_USER_MODEL至settings.py时出现配置错误
Django AUTH_USER_MODEL 提示模型未安装的解决办法
我在Django项目中设置AUTH_USER_MODEL = "PMEapp.User"时遇到错误,尽管PMEapp已经添加到INSTALLED_APPS中,但仍返回:
django.core.exceptions.ImproperlyConfigured: AUTH_USER_MODEL refers to model 'PMEapp.User' that has not been installed
相关配置:
INSTALLED_APPS:
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'PMEapp', ]
自定义用户模型配置:
AUTH_USER_MODEL = "PMEapp.User"
User模型位于PMEapp/models.py中,尝试过拆分模型文件、调整目录结构等方法均无效。
排查与解决步骤
1. 确保模型定义正确
检查PMEapp/models.py中的User模型是否正确继承Django用户基类,且类名准确为User:
from django.contrib.auth.models import AbstractUser from django.db import models class User(AbstractUser): # 自定义字段(可选,如需要扩展用户属性) # 示例:phone = models.CharField(max_length=11, blank=True) pass
- 必须继承
AbstractUser或AbstractBaseUser(后者需额外配置验证逻辑) - 类名必须严格与
AUTH_USER_MODEL中的User一致
2. 确保模型被正确加载
如果User模型放在单独文件(比如PMEapp/models/User.py)中,需要在PMEapp/models/__init__.py显式导入,让Django能检测到:
# PMEapp/models/__init__.py from .User import User
更稳妥的方式是直接将User类放在models.py顶层,避免拆分文件导致的加载遗漏。
3. 确认App配置正确
检查PMEapp/apps.py中的App配置类是否正确,name字段必须与app名称完全一致:
# PMEapp/apps.py from django.apps import AppConfig class PMEappConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' name = 'PMEapp'
同时在PMEapp/__init__.py中指定默认配置类:
# PMEapp/__init__.py default_app_config = 'PMEapp.apps.PMEappConfig'
或者直接在INSTALLED_APPS中使用完整配置类路径:
INSTALLED_APPS = [ # ...其他应用 'PMEapp.apps.PMEappConfig', ]
4. 清理迁移文件与缓存
旧迁移文件或缓存可能导致Django无法识别新模型,开发环境可执行以下操作(生产环境请先备份数据):
- 删除
PMEapp/migrations目录下除__init__.py外的所有文件 - 执行命令重置并重新生成迁移:
python manage.py flush python manage.py makemigrations PMEapp python manage.py migrate
5. 检查拼写与大小写
Django对名称大小写敏感,需确保:
AUTH_USER_MODEL中的PMEapp与实际app目录名称完全一致(包括大小写)- 模型类名
User与models.py中的类名完全一致(首字母大写)
内容的提问来源于stack exchange,提问作者Daniel Lopes Cardoso
相关产品推荐
相关产品推荐

