我想要两个外键到同一个模型:
class Test(models.model): example1 = models.ForeignKey(Example) example2 = models.ForeignKey(Example)
我得到的错误如下:
字段'example1'的访问器与相关字段'Example.test_set'冲突 . 将related_name参数添加到'example1'的定义中 .
Django使用一些python魔法来定义模型之间的关系,其中一些涉及在关系中使用模型的名称(这是'test__set'中的'test'来自的地方 . )我猜,正在发生的是,它是试图将“test__set”放在Example模型中两次,对于你定义的每个外键一次 .
错误消息建议尝试一下:定义一个 related_name 参数(覆盖其中一个'test_set')它可以使用而不是自动生成两个冲突名称 .
related_name
更多信息here:页面已被删除
当前页面与模特关系有关:https://docs.djangoproject.com/en/2.0/ref/models/fields/#module-django.db.models.fields.related
尝试使用related_name:
class Test(models.model): example1 = models.ForeignKey('Example', related_name='example1') example2 = models.ForeignKey('Example', related_name='example2')
只需执行错误消息告诉您的操作,如果您不确定这意味着什么,请参阅 related_name 的文档 .
在django 2.0中试试这个:
user = models.ForeignKey(User, on_delete=models.PROTECT, null=True, related_name='user') paper = models.ForeignKey(paperRecord, on_delete=models.PROTECT, null=True, related_name='paper')
4 回答
Django使用一些python魔法来定义模型之间的关系,其中一些涉及在关系中使用模型的名称(这是'test__set'中的'test'来自的地方 . )我猜,正在发生的是,它是试图将“test__set”放在Example模型中两次,对于你定义的每个外键一次 .
错误消息建议尝试一下:定义一个
related_name
参数(覆盖其中一个'test_set')它可以使用而不是自动生成两个冲突名称 .更多信息here:页面已被删除
当前页面与模特关系有关:https://docs.djangoproject.com/en/2.0/ref/models/fields/#module-django.db.models.fields.related
尝试使用related_name:
只需执行错误消息告诉您的操作,如果您不确定这意味着什么,请参阅
related_name
的文档 .在django 2.0中试试这个: