Django迁移报错:webapp.Login.user_permissions反向访问器冲突
解决Django模型迁移的反向访问器冲突问题
问题原因
自定义继承AbstractUser的Login模型后,Django默认的auth.User模型仍存在,两者的user_permissions字段反向访问器名称重复,导致迁移时出现冲突。
解决步骤
配置自定义用户模型
打开项目的settings.py文件,添加如下配置,指定Django使用你的自定义用户模型:AUTH_USER_MODEL = 'webapp.Login'注意:该配置必须在首次执行迁移前设置;若已执行过迁移,需清空数据库及
webapp/migrations目录下除__init__.py外的所有迁移文件后再操作。统一模型关联方式
项目中所有需要关联用户模型的地方,都要使用自定义的Login模型或通过settings.AUTH_USER_MODEL引用,示例:from django.conf import settings user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)你的
Student模型已正确关联Login,这部分无需修改。重新执行迁移
清理残留后,运行以下命令完成迁移:python manage.py makemigrations python manage.py migrate
额外提示
- 一旦设置
AUTH_USER_MODEL,整个项目需统一使用该自定义模型,不能再混用默认的auth.User。 - 若为已有项目替换用户模型,需手动修改迁移文件与数据库表结构,建议在项目初期就确定用户模型方案。
内容的提问来源于stack exchange,提问作者Praveena Venu
相关产品推荐
相关产品推荐

