Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为Django 1.5.2中不是主键的属性创建ForeginKey?_Django_Django Models - Fatal编程技术网

如何为Django 1.5.2中不是主键的属性创建ForeginKey?

如何为Django 1.5.2中不是主键的属性创建ForeginKey?,django,django-models,Django,Django Models,我有两个模型。我需要将属性c作为属性y的引用 上述语法产生以下错误: CommandError:一个或多个模型未验证: 第二:字段“c”的访问器与字段“One.c”冲突。将相关的_name参数添加到“c”的定义中。 第二:字段“c”的反向查询名称与字段“One.c”冲突。将相关的\u name参数添加到“c”的定义中。请尝试ForeignKey。到\u字段类似: class One x = models.AutoField(primary_key=True) y = models

我有两个模型。我需要将属性c作为属性y的引用

上述语法产生以下错误:

CommandError:一个或多个模型未验证:
第二:字段“c”的访问器与字段“One.c”冲突。将相关的_name参数添加到“c”的定义中。

第二:字段“c”的反向查询名称与字段“One.c”冲突。将相关的\u name参数添加到“c”的定义中。

请尝试
ForeignKey。到\u字段
类似:

class One
    x = models.AutoField(primary_key=True)
    y = models.IntegerField(max_length=5)

class Two
    a = models.AutoField(primary_key=True)
    b = models.ForeignKey(One)
    c = models.ForeignKey(One, related_name='y', to_field = 'y')
告诉我是否有用。

请告诉我你需要什么,因为它看起来不是一个好的(罐头)解决方案:)

我看不出你有什么理由这么做。如果有对模型“One”的引用,则可以轻松访问属性“y”

from your_app.models import One, Two

two = Two.objects.get(pk=1)  # To get the first Object, for example
one = two.b                  # You get a Objects of Model One
print one.y                  # Print the attribute 'y' from models One
(我希望里面没有语法错误。如果有,请纠正我)

这样您就可以访问所需的属性。不需要引用非主键字段。事实上,我认为甚至不可能引用没有主键的字段。引用是1:1的关系。如果该字段不是主键,则可能有更多具有相同内容的字段:

A:  ID_pk   Text     B: ID_pk   text_fk
      1     Foo           1        1
      2     Bar           2       Foo
      3     Foo
也许这个例子解释了这个问题。表A存储了一个由主键ID_pk标识的文本。 表B参考了表A。第1行中没有问题。我们要引用的ID是1。这就是表A中的第1行。
第二排我们只说“Foo”。但是由于表A中的Foo位于第1行和第3行,数据库不知道您要引用哪一行

我需要确保属性C包含对属性Y的任何实例的引用。我也可以使用验证代码来处理这个问题,但我想知道这是否可以在模型本身中处理。为什么需要这样做?你想干什么?
A:  ID_pk   Text     B: ID_pk   text_fk
      1     Foo           1        1
      2     Bar           2       Foo
      3     Foo