Django - 在SQLite3中设置ForeignKey可延迟外键约束

时间:2012-05-12 06:15:52

标签: python django sqlite

我似乎无法在Django中的两个模型之间创建一个初始可延迟的外键关系,并使用SQLite3作为我的后端存储。

考虑这个简单的例子。这就是 models.py 的样子:

from django.db import models

class Investigator(models.Model):
    name = models.CharField(max_length=250)
    email = models.CharField(max_length=250)

class Project(models.Model):
    name = models.CharField(max_length=250)
    investigator = models.ForeignKey(Investigator)

这就是 sqlall 的输出:

BEGIN;
CREATE TABLE "moo_investigator" (
    "id" integer NOT NULL PRIMARY KEY,
    "name" varchar(250) NOT NULL,
    "email" varchar(250) NOT NULL
)
;
CREATE TABLE "moo_project" (
    "id" integer NOT NULL PRIMARY KEY,
    "name" varchar(250) NOT NULL,
    "investigator_id" integer NOT NULL REFERENCES "moo_investigator" ("id")
)
;
CREATE INDEX "moo_project_a7e50be7" ON "moo_project" ("investigator_id");
COMMIT;
项目表中的* investigator_id *列中缺少“DEFERRABLE INITIALLY DEFERRED”。我做错了什么?

P.S。我是Python和Django的新手 - 使用Python版本2.6.1 Django版本1.4和SQLite版本3.6.12

2 个答案:

答案 0 :(得分:0)

Sqlite后端不会添加"DEFERRABLE INITIALLY DEFERRED"。查看the code

答案 1 :(得分:0)