我在两个模型userprofile
和image
之间存在循环依赖关系:
用户个人资料中包含用户图像的外键
图片有一个指向用户个人资料的外键,表示该图片的所有者
这是运行makemigrations
时显示的错误:
File "/usr/local/lib64/python3.4/site-packages/django/db/migrations/graph.py", line 241, in ensure_not_cyclic
raise CircularDependencyError(", ".join("%s.%s" % n for n in cycle))
django.db.migrations.exceptions.CircularDependencyError: profiles.0001_initial, media.0001_initial
有什么方法可以解决这个问题? (我希望保留与用户配置文件相关联的图像而不是auth用户,以便在必要时可以轻松转移用户配置文件和所有媒体的所有权)
以下是实际代码(Lessor
是用户个人资料):
profiles.models
class Lessor(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL, models.CASCADE)
logo = models.ForeignKey('media.Image', related_name='logo_set', null=True)
portrait = models.ForeignKey('media.Image', related_name='portrait_set', null=True)
media.models
class Image(models.Model):
author = models.ForeignKey('profiles.Lessor')
答案 0 :(得分:2)
注释掉Lessor.portrait
外键,并为两个模型创建迁移。
创建Image
模型后,您可以取消注释该字段,并创建另一个迁移以添加外键。