【问题标题】:Django: inheritance creates foreign keys?Django:继承创建外键?
【发布时间】:2012-01-18 23:47:27
【问题描述】:

我正在阅读别人的 Django 代码,使用 PostgreSQL,这是我不明白的。

似乎,当这段代码从另一个类定义一个类时,该类的外键会在这个类中创建。我真的不明白为什么两者之间会有联系,似乎继承和外键是完全不同的概念。

这里有一些代码,类是 Contractor,它继承自 auth.User - 这是在项目其他地方创建的自定义类。

class Contractor(lancer.auth.User):
    a = models.xxxx
    b = models.xxxx
    .... 

在我同步数据库之后,数据库显示类似这样的内容,

CREATE TABLE lancer_contractor
(
    user_ptr_id integer NOT NULL,
    a integer,
    b text NOT NULL,
    .... 

    CONSTRAINT lancer_contractor_pkey PRIMARY KEY (user_ptr_id ),
    CONSTRAINT lancer_contractor_user_ptr_id_fkey FOREIGN KEY (user_ptr_id)
        REFERENCES lancer_user (id) MATCH SIMPLE
        ON UPDATE NO ACTION ON DELETE NO ACTION DEFERRABLE INITIALLY DEFERRED
)

从这段 SQL 代码中我明白了两件事,

  1. 不知何故,在 Contractor 表中创建了一个指向 User 表的外键
  2. 该外键也是 Contractor 的主键

在使用其他一些随机类进行一些测试后,我可以确认这种情况总是会发生。这里发生了什么?为什么外键与继承混淆?

谢谢!

【问题讨论】:

    标签: django inheritance foreign-keys


    【解决方案1】:

    【讨论】:

    • 谢谢!我应该进一步阅读文档。
    猜你喜欢
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    • 2012-06-09
    • 1970-01-01
    • 2013-07-24
    • 2013-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多