Django移动自定义User模型到models子目录报AUTH_USER_MODEL未安装错误
解决方案
你遇到的报错核心原因是Django默认仅扫描应用根目录下的models.py文件中的模型定义,拆分模型到子目录后需要额外配置才能被Django识别,按以下步骤操作即可解决:
步骤1:调整目录结构
在myapp目录下创建models文件夹,最终目录结构如下:
[myapp]/ ├── __pycache__/ ├── migrations/ ├── __init__.py ├── admin.py ├── apps.py ├── models/ │ ├── __init__.py │ └── user.py
原根目录下的models.py可以直接删除。
步骤2:编写模型文件
将原来models.py中的User模型代码完整复制到myapp/models/user.py中,内容保持不变:
from django.db import models from django.contrib.auth.models import AbstractBaseUser class User(AbstractBaseUser): id = models.CharField(max_length=15, null=False, blank=False, primary_key=True, unique=True) USERNAME_FIELD = "id"
步骤3:配置模型包的初始化文件
在myapp/models/__init__.py中添加以下导入语句,将User模型暴露到myapp.models命名空间下,让Django可以识别到该模型:
from .user import User
步骤4:验证配置
执行python manage.py makemigrations --dry-run命令,此时不会再抛出找不到User模型的错误。如果此前已经生成过旧的迁移文件,只需要确保迁移文件中对User模型的引用方式不变即可,无需额外修改迁移内容。
内容的提问来源于stack exchange,提问作者aman
相关产品推荐
相关产品推荐

