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

时间:2009-02-12 21:28:01

标签: django django-models

我想为同一个模型提供两个外键:

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

我收到的错误如下:

  

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

4 个答案:

答案 0 :(得分:106)

尝试使用related_name

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

答案 1 :(得分:22)

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

答案 2 :(得分:7)

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

答案 3 :(得分:0)

在Django 2.0中,请尝试以下操作:

import cx_Oracle
con = cx_Oracle.connect('username/password@host_name/service_name')
print con.version
con.close()