Django 中 AUTH_USER_MODEL 指向未注册应用模型的解决方法  第1张

当自定义用户模型(如 'book.customuser')未在 installed_apps 中注册时,django 启动会抛出 improperlyconfigured 异常,需确保对应应用已正确安装。

在 Django 项目中,若通过 AUTH_USER_MODEL = 'book.CustomUser' 指定了自定义用户模型,Django 会在启动时校验该模型是否真实存在且可导入。而“model 'book.CustomUser' that has not been installed”这一错误明确表示:虽然模型路径语法正确,但 Django 并未将 book 应用识别为已启用的应用——根本原因在于 book 未被添加到 INSTALLED_APPS 设置中。

✅ 正确做法是,在 settings.py 的 INSTALLED_APPS 列表中显式注册 book 应用:

# settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # 其他已启用的应用...
    'book',  # ← 关键:必须添加这一行
]

⚠️ 注意事项:

  • book 是应用名(即包含 models.py 的 Python 包名),不是模块路径或模型类名
  • 修改 INSTALLED_APPS 后,需重启开发服务器使配置生效;
  • 若 book 应用尚未创建迁移,请运行 python manage.py makemigrations book 和 python manage.py migrate;
  • AUTH_USER_MODEL 必须在项目首次迁移前就配置好;若已在生产环境使用默认用户模型,切换自定义用户模型需谨慎处理数据迁移。

完成配置后,Django 将成功加载 book.CustomUser,该异常即可消除。这是 Django 用户系统扩展中最基础也最关键的配置步骤之一。