使用syncdb
时,会创建以下架构:
CREATE TABLE "MyApp_supervisor" (
"id" integer NOT NULL PRIMARY KEY,
"supervisor_id" integer NOT NULL REFERENCES "MyApp_employee" ("id"),
"section_id" integer NOT NULL REFERENCES "MyApp_section" ("id")
);
使用migrate
时,它会更改为:
CREATE TABLE "MyApp_supervisor" (
"id" integer NOT NULL PRIMARY KEY,
"supervisor_id" integer NOT NULL,
"section_id" integer NOT NULL
);
为什么南方会这样做?我还没有注意到一个功能性问题,但我厌倦了忽略这个......
有人可以了解这里发生的事情吗?
答案 0 :(得分:0)
可能是因为SQL32中仅在版本3.6.19 as this page says中引入了外键支持:
本文档介绍了该支持 用于SQL外键约束 在SQLite版本3.6.19中引入。
它看起来像版本3.6.19 was tagged on 14th Oct 2009,这实际上是最近的,所以它可能还没有在任何地方部署。
我猜这个选择不是为了声明外键,因为它们还没有被广泛支持,这取决于所使用的SQLite的版本。 (话虽如此,之前支持外键语法,但只是被忽略了。)