首页 文章

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

提问于
浏览
34

我想要两个外键到同一个模型:

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

我得到的错误如下:

字段'example1'的访问器与相关字段'Example.test_set'冲突 . 将related_name参数添加到'example1'的定义中 .

4 回答

  • -1

    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

  • 20

    尝试使用related_name

    class Test(models.model):
        example1 = models.ForeignKey('Example', related_name='example1')
        example2 = models.ForeignKey('Example', related_name='example2')
    
  • 7

    只需执行错误消息告诉您的操作,如果您不确定这意味着什么,请参阅 related_name 的文档 .

  • 100

    在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')
    

相关问题