1

我似乎坚持在 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” 。我究竟做错了什么?

ps 我是 Python 和 Django 的新手——使用 Python 2.6.1 版 Django 1.4 版和 SQLite 3.6.12 版

4

2 回答 2

1

此行为现​​在是默认行为。见https://github.com/django/django/blob/803840abf7dcb6ac190f021a971f1e3dc8f6792a/django/db/backends/sqlite3/schema.py#L16

于 2018-11-07T20:06:47.440 回答
0

Sqlite 后端不添加"DEFERRABLE INITIALLY DEFERRED". 检查代码

于 2012-05-12T07:09:32.720 回答