Django:继承创建外键?

时间:2011-12-13 02:13:59

标签: django inheritance foreign-keys

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

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

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

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

在syncdb之后,数据库显示如下内容

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. 该外键也是承包商的主键
  3. 经过一些其他随机类的测试后,我可以确认这种情况总是会发生。这里发生了什么?为什么外键与继承混在一起?

    谢谢!

1 个答案:

答案 0 :(得分:1)