Django执行migrate报错:'str' object has no attribute '_meta'
解决Django全新项目migrate时AttributeError问题
问题分析
报错出现在auth.0013_user_following迁移步骤,错误AttributeError: 'str' object has no attribute '_meta'通常是因为用户模型的引用格式错误,或者数据库残留了错误的迁移状态。
解决方案
1. 检查settings.py中的AUTH_USER_MODEL配置
打开项目根目录的settings.py,找到AUTH_USER_MODEL配置项:
- 默认值应为
AUTH_USER_MODEL = 'auth.User'(或完整格式'django.contrib.auth.models.User') - 如果该配置被修改为
'User'这类不完整的字符串格式,会导致Django无法正确识别模型,恢复为默认值即可。
2. 清理数据库文件
若使用SQLite数据库:
- 删除项目根目录下的
db.sqlite3文件 - 重新执行迁移命令:
python manage.py migrate
3. 重建干净的虚拟环境
- 删除原虚拟环境文件夹
- 创建并激活新虚拟环境:
# Windows系统 python -m venv myenv myenv\Scripts\activate # macOS/Linux系统 python3 -m venv myenv source myenv/bin/activate
- 安装对应版本的Django:
pip install django==4.x # 替换为你使用的具体Django版本
- 重新创建项目与应用,再执行迁移操作。
4. 排查全局配置干扰
检查用户目录下是否存在django.conf相关配置文件,或是否设置了影响Django的环境变量,确保这些内容不会干扰项目的默认配置。
内容的提问来源于stack exchange,提问作者Prateek Lodhi
相关产品推荐
相关产品推荐

