django.db.migrations.exceptions.CircularDependencyError

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容