0

公式チュートリアルでdjangoを学んでいます。

SQLite を使用するように settings.py を構成し、.py を実行しましpython manage.py syncdbた。auth_user次のスキーマが生成されました。スキーマを表示すると、テーブルのid列とauth_user_groupsテーブルの列の間に参照がないことがわかりましたuser_id。ただし、テーブルの列とテーブルの列の間に参照が存在しましauth_groupidauth_user_groupsgroup_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
4

1 に答える 1

1

SQLiteは構文の使用を推奨しておりREFERENCES、完全なFOREIGNKEYサポートには追加のプラグマスイッチが必要です。

Historically, SQLite did not support FOREIGN KEY constraints at all, and when they were added it was with an explicit per-connection switch to turn this on to retain backwards compatibility. For Django, using REFERENCES suffices, does not limit Django to the more recent versions and saves having to enable the FOREIGN KEY support or detecting that the feature has been compiled in.

于 2013-02-16T13:21:31.953 に答える