如果在数据库迁移时遇到django.db.migrations.exceptions.CircularDependencyError,且模型不存在循环引用的问题,那么这个报错是由于python文件重复引用导致的,例如我的模型如下:
from project.models.projectModels import Project
class AuthProject(models.Model):
project = models.ForeignKey(Project, on_delete=models.CASCADE, verbose_name='项目')
user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name='用户')
...
该类用于多对多,但为了实现我们自己扩展,不让django框架自己持有,所以创建了一个中间表,并未使用ManyToManyField。
该模型中两个外键文件不在同一处,AuthProject在User中,project在Project中:
模型结构
目前针对这个情况出现的循环引用,有两个解决方案:
1)将AuthProject模型转移到Project文件中
如果像这种模型文件分离的形式使用该方案,可能会导致代码结构改变,改动量比较大。
2)先注释掉循环引用外键,然后makemigrations和migrate,成功后,再打开注释,再进行一次makemigrations和migrate。
网友评论