我正在阅读别人的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代码中我理解了两件事,
经过一些其他随机类的测试后,我可以确认这种情况总是会发生。这里发生了什么?为什么外键与继承混在一起?
谢谢!