You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django拆分models目录后自定义用户模型报未安装错误

问题原因

Django的模型加载机制默认只会识别两种位置的模型:

  1. app目录下单文件形式的models.py
  2. app目录下models包(即带__init__.py的models文件夹)中,被__init__.py显式导入的模型类

你把原models.py拆成models文件夹下的独立文件后,没有在models包的初始化文件里导入AppUser,Django启动时扫描不到这个模型,就会抛出AUTH_USER_MODEL refers to model 'app.AppUser' that has not been installed的错误。
另外注意:AUTH_USER_MODEL的配置格式必须严格遵循app_label.ModelName的形式,不支持加中间模块路径,你之前尝试修改为带models、users_model的写法不符合Django的配置规范,所以会触发格式校验的ValueError。

解决方案

按以下步骤操作即可修复问题:

  • 首先在app/models/路径下新建__init__.py文件(如果已有就直接编辑),把所有定义的模型类显式导入到该文件中,针对你的用户模型需要添加如下内容:
# app/models/__init__.py
from .users_model import AppUser, MyUserManager
# 其余功能的模型也在此处逐一导入,示例:
# from .model_for_feature_1 import Feature1Model
# from .model_for_feature_2 import Feature2Model
  • 打开config/settings.py,把AUTH_USER_MODEL恢复为符合规范的配置,不要带多余的路径层级:
AUTH_USER_MODEL = "app.AppUser"
  • 修正项目中所有模型的导入路径,避免循环导入问题。比如admin.py中注册模型时,导入语句要从models包入口引入,不要直接指向子文件:
# app/admin.py 正确写法
from django.contrib import admin
from app.models import AppUser

admin.site.register(AppUser)
  • 如果之前执行迁移生成过错误的残留文件,先清空app/migrations/目录下除__init__.py之外的所有文件,再重新执行迁移命令即可:
python manage.py makemigrations
python manage.py migrate

补充说明:你拆分的serializer、views、urls文件夹也遵循相同的包导入逻辑,要么在对应文件夹的__init__.py中显式导出需要被外部引用的对象,要么在引用时写全到具体文件的模块路径,否则同样会出现对象找不到的报错。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 08:24:15