为什么Django只在ManyToMany表上创建一个“REFERENCES”子句?

时间:2015-03-12 09:31:02

标签: django sqlite

使用以下模型:

class Bar(models.Model):
    bar = models.TextField(max_length=40,blank=False,null=False)

class Foo(models.Model):
    foo = models.TextField(max_length=8,blank=False,null=False)
    bars = models.ManyToManyField(Bar)

Django 1.6.1生成:

BEGIN;
CREATE TABLE "example_bar" (
    "id" integer NOT NULL PRIMARY KEY,
    "bar" text NOT NULL
)
;
CREATE TABLE "exmaple_foo_bars" (
    "id" integer NOT NULL PRIMARY KEY,
    "foo_id" integer NOT NULL,
    "bar_id" integer NOT NULL REFERENCES "mdtconfig_bar" ("id"),
    UNIQUE ("foo_id", "bar_id")
)
;
CREATE TABLE "exmaple_foo" (
    "id" integer NOT NULL PRIMARY KEY,
    "foo" text NOT NULL
)
;

COMMIT;

为什么" foo_id" in" example_foo_bars"没有"参考"像" bar_id"在同一张桌子上?

我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:1)

因为还没有创建exmaple_foo表,所以它无法添加引用。然而,之后它通过执行ALTER TABLE来添加索引来执行此操作,您可以在执行./manage.py sqlall时看到。

但是,这种表创建方法已被1.7中的迁移功能所取代。