0
我是一個初學者穿過一個Django引導裝模作樣的和它告訴我把這個在models.py:如何使用Django模型創建連接表?
class Bookmark(models.Model):
title = models.CharField(max_length=200)
user = models.ForeignKey(User)
link = models.ForeignKey(Link)
class Tag(models.Model):
name = models.CharField(max_length=64, unique=True)
bookmarks = models.ManyToManyField(Bookmark)
這應該使一個連接表與此SQL:
CREATE TABLE "bookmarks_tag_bookmarks" (
"id" integer NOT NULL PRIMARY KEY,
"tag_id" integer NOT NULL REFERENCES "bookmarks_tag" ("id"),
"bookmark_id" integer NOT NULL REFERENCES "bookmarks_bookmark" ("id"),
UNIQUE ("tag_id", "bookmark_id")
);
但是,當我運行manage.py sql書籤,而是得到這個SQL:
CREATE TABLE "bookmarks_tag_bookmarks" (
"id" integer NOT NULL PRIMARY KEY,
"tag_id" integer NOT NULL,
"bookmark_id" integer NOT NULL REFERENCES "bookmarks_bookmark" ("id"),
UNIQUE ("tag_id", "bookmark_id")
);
連接表不引用標記表。任何人都可以請向我解釋什麼是錯的?
嗯,我沒有得到任何這樣的東西。我發佈的SQL是唯一提到了bookmarks_tag_bookmarks表的東西。 – pennydrops
你應該,我從來沒有見過它做任何錯誤的事情。它非常好,可能處於最低點或更低點。這是操作順序,標記表需要存在,SQL生成器已在兩個表之前創建了連接表,因此它稍後添加了約束。你應該可以通過運行syncdb完成確認,然後進入db並檢查模式 – John
哦,這非常合理。 SQL輸出顯示連接表是在標記表之前創建的。所以數據庫可能是正確的,但它向我顯示的SQL輸出是誤導性的? – pennydrops