django.db.migrations.exceptions.

2022-05-06  本文已影响0人  有怪兽变身奥特曼

如果在数据库迁移时遇到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。

上一篇 下一篇

猜你喜欢

热点阅读