Django自定义用户模型迁移报错:store.Product.created_by关联问题
解决Django自定义用户模型迁移时的关联错误
问题根源
你的store应用中Product模型的created_by字段仍在关联Django默认的auth.User模型,但你已经在settings.py中配置了自定义用户模型AUTH_USER_MODEL = 'account.UserBase',导致迁移时出现关联冲突。
修复步骤
- 打开
store应用下的models.py文件,找到Product模型的created_by字段。 - 将外键的关联目标替换为自定义用户模型,以下两种写法均可:
写法一:通过settings.AUTH_USER_MODEL引用(推荐)
这种写法更灵活,后续若修改自定义用户模型的路径,无需改动此处代码:
from django.db import models from django.conf import settings # 导入settings模块 class Product(models.Model): # 保留其他字段... created_by = models.ForeignKey( settings.AUTH_USER_MODEL, on_delete=models.CASCADE, # 可选:添加related_name参数,比如related_name='created_products' )
写法二:直接导入自定义用户模型
若确定自定义用户模型的路径不会变动,也可直接导入:
from django.db import models from account.models import UserBase # 导入自定义用户模型 class Product(models.Model): # 保留其他字段... created_by = models.ForeignKey( UserBase, on_delete=models.CASCADE, # 可选:添加related_name参数,比如related_name='created_products' )
后续操作
修改完成后,重新执行迁移命令:
python manage.py makemigrations python manage.py migrate
注意:如果之前已为
store应用生成并执行过迁移文件,开发环境下可删除store/migrations目录中除__init__.py外的所有文件,再重新生成迁移;生产环境需谨慎处理,避免数据丢失。
内容的提问来源于stack exchange,提问作者Hosen
相关产品推荐
相关产品推荐

