Django开发CRM自定义用户模型出现fields.E304反向访问器冲突报错
报错原因
- 核心配置拼写错误:Django指定自定义用户模型的官方配置项为
AUTH_USER_MODEL(单数形式),你在settings.py中错误写成了复数的AUTH_USER_MODELS,导致Django无法识别你自定义的leads.User模型,同时加载了默认的auth.User和你定义的User两个继承AbstractUser的模型,二者的groups、user_permissions字段生成的反向关联名冲突,触发报错。 - 代码语法缺失:你贴出的
INSTALLED_APPS列表缺少闭合的右中括号],属于基础语法错误,也会影响配置加载。 - 潜在迁移残留问题:如果在配置自定义用户模型之前已经执行过
migrate生成了默认auth相关的数据库表,残留的迁移记录也会触发该冲突。
解决方法
- 修正settings.py错误
首先补全INSTALLED_APPS的闭合括号,再修改自定义用户模型配置:
# 补全INSTALLED_APPS闭合 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'leads', ] # 把复数的AUTH_USER_MODELS改为单数的AUTH_USER_MODEL AUTH_USER_MODEL = 'leads.User'
- 清理残留文件并重新迁移
如果项目还在开发阶段无生产数据,按以下步骤操作:
- 删除项目根目录下的默认数据库文件(通常为
db.sqlite3) - 删除
leads应用下migrations目录中除__init__.py之外的所有文件 - 执行命令生成新的迁移文件:
python manage.py makemigrations - 执行迁移命令同步数据库:
python manage.py migrate
内容的提问来源于stack exchange,提问作者Developer Lachi
相关产品推荐
相关产品推荐

