如何在Django中为同一个模型提供两个外键?

How can I have two foreign keys to the same model in Django?

我想要同一型号的两个外键:

1
2
3
class Test(models.model):
    example1 = models.ForeignKey(Example)
    example2 = models.ForeignKey(Example)

我会得到错误,比如:

Accessor for field 'example1' clashes with related
field 'Example.test_set'. Add a related_name argument
to the definition for 'example1'.


尝试使用related_name

1
2
3
class Test(models.model):
    example1 = models.ForeignKey('Example', related_name='example1')
    example2 = models.ForeignKey('Example', related_name='example2')


Django使用一些python魔法来定义模型之间的关系,其中一些涉及到在关系中使用模型的名称(这就是"test_u set"中的"test"来自的地方)。我想,发生的事情是,它试图在示例模型中放置"test_u set"两次,对于您定义的每个外键一次。

错误消息建议您尝试一下:定义一个related_name参数(覆盖其中一个"测试集"),它可以使用该参数,而不是自动生成两个冲突的名称。

此处提供更多信息:页面已被删除

与模型关系相关的当前页面:https://docs.djangoproject.com/en/2.0/ref/models/fields/module-django.db.models.fields.related.相关


只要按照错误消息告诉您的操作,如果您不确定这意味着什么,请参考EDOCX1的文档(0)。


在Django 2.0中,尝试以下方法:

1
2
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')