簡體   English   中英

默認的Django身份驗證架構不會在用戶和組之間創建引用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM