【问题标题】:On a database level, what is the difference between [Django] OneToOneFiled and ForeignKey(Model, unique = True)在数据库级别上,[Django] OneToOneFiled 和 ForeignKey(Model, unique = True) 有什么区别
【发布时间】:2010-01-14 11:50:41
【问题描述】:

两者似乎都在生成 integer NOT NULL UNIQUE REFERENCES 数据库列。

编辑:我的问题仅涉及数据库级别。 (不在 Django ORM 中。)

【问题讨论】:

    标签: database django


    【解决方案1】:

    ForeignKey 字段应用于 1 对 n 关系,OneToOneField 应用于 1 对 1 关系。

    在数据库级别,外键对于 OneToOneFields 是唯一的,而对于 ForeignKeys 则不是这样。

    【讨论】:

    • 有了ForeignKey(Model, unique = True),FK 显然是独一无二的,所以你是说没有差异?
    • 对不起,我没有注意到问题的标题。我认为确实没有区别。
    【解决方案2】:

    你的答案在官方documentation。

    基本上,不同之处在于,当您尝试从对象访问 ForeignKey 时,您将获得另一个对象,而不是像在 ForeignKey 中那样的查询集。

    来自文档:

    类 OneToOneField(othermodel[, parent_link=False, **options])

    一对一的关系。从概念上讲,这类似于具有 unique=True 的 ForeignKey,但关系的“反向”端将直接返回单个对象。

    【讨论】:

    • 弗拉维奥:感谢您的链接。但是我的问题是On a database level 是否有任何 差异。
    • @uswaretech 就文档而言,数据库级别没有区别。
    猜你喜欢
    • 2011-08-17
    • 2012-04-14
    • 2023-03-16
    • 2012-03-01
    • 1970-01-01
    • 2020-02-19
    • 2014-10-12
    • 2021-05-13
    相关资源
    最近更新 更多