Django用户图像 - 如何绕过这个循环依赖?

时间:2015-12-19 23:39:39

标签: django django-models

我在两个模型userprofileimage之间存在循环依赖关系:

  • 用户个人资料中包含用户图像的外键

  • 图片有一个指向用户个人资料的外键,表示该图片的所有者

这是运行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')

1 个答案:

答案 0 :(得分:2)

注释掉Lessor.portrait外键,并为两个模型创建迁移。

创建Image模型后,您可以取消注释该字段,并创建另一个迁移以添加外键。