[英]Default django auth schema doesn't create reference between users and groups
我正在使用官方教程學習django。
我已經將settings.py配置為使用SQLite,並運行了python manage.py syncdb
。 生成了以下架構,查看架構后,我發現auth_user
表的id
列和auth_user_groups
表的user_id
列之間沒有引用。 但是,在auth_group
表的id
列和auth_user_groups
表的group_id
列之間確實存在引用。
為什么auth_user表和auth_group表之間沒有引用?
--..OTHER TABLES
CREATE TABLE "auth_user" (
"id" integer NOT NULL PRIMARY KEY,
"username" varchar(30) NOT NULL UNIQUE,
"first_name" varchar(30) NOT NULL,
"last_name" varchar(30) NOT NULL,
"email" varchar(75) NOT NULL,
"password" varchar(128) NOT NULL,
"is_staff" bool NOT NULL,
"is_active" bool NOT NULL,
"is_superuser" bool NOT NULL,
"last_login" datetime NOT NULL,
"date_joined" datetime NOT NULL
);
CREATE TABLE "auth_user_groups" (
"id" integer NOT NULL PRIMARY KEY,
"user_id" integer NOT NULL, --why not "user_id" integer NOT NULL REFERENCES "auth_user" ("id") ?
"group_id" integer NOT NULL REFERENCES "auth_group" ("id"),
UNIQUE ("user_id", "group_id")
--...OTHER TABLES
SQLite 建議使用REFERENCES
語法 ,並且全面的FOREIGN KEY支持需要額外的編譯指示。
從歷史上看,SQLite根本不支持FOREIGN KEY約束,添加它們時,它帶有顯式的逐連接開關以將其打開以保持向后兼容性。 對於Django,使用REFERENCES
就足夠了,它並不限制Django使用最新版本,並且省去了啟用FOREIGN KEY支持或檢測到該功能已被編譯的麻煩。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.