2015-12-03 271 views
1

我在MySQL數據庫的兩個表,它看起來像這樣:如何在Django模型中定義多主鍵和外鍵

Table1: 
    number int pk 
    type int pk 
    ... 

Table2: 
    number int pk fk 
    type int pk fk 
    ... 

我在models.py定義的模型這樣

def Table1: 
    class Meta: 
     unique-together = ('number', 'type'), 
     index-together = ('number', 'type'), 

    primary = ('number', 'type') 

    number = models.IntegerField() 
    type = models.IntegerField() 
    ... 

當我遷移模型時,結果不是我想要的。

BEGIN; 
-- 
-- Create model Table1 
-- 
CREATE TABLE "multiprimary_table1" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "number" integer NOT NULL, "type" integer NOT NULL); 
-- 
-- Alter unique_together for table1 (1 constraint(s)) 
-- 
ALTER TABLE "multiprimary_table1" RENAME TO "multiprimary_table1__old"; 
CREATE TABLE "multiprimary_table1" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "number" integer NOT NULL, "type" integer NOT NULL); 
INSERT INTO "multiprimary_table1" ("type", "id", "number") SELECT "type", "id", "number" FROM "multiprimary_table1__old"; 
DROP TABLE "multiprimary_table1__old"; 
CREATE UNIQUE INDEX "multiprimary_table1_number_8d499fc9_uniq" ON "multiprimary_table1" ("number", "type"); 
-- 
-- Alter index_together for table1 (1 constraint(s)) 
-- 
ALTER TABLE "multiprimary_table1" RENAME TO "multiprimary_table1__old"; 
CREATE TABLE "multiprimary_table1" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "number" integer NOT NULL, "type" integer NOT NULL); 
INSERT INTO "multiprimary_table1" ("type", "id", "number") SELECT "type", "id", "number" FROM "multiprimary_table1__old"; 
DROP TABLE "multiprimary_table1__old"; 
CREATE UNIQUE INDEX "multiprimary_table1_number_8d499fc9_uniq" ON "multiprimary_table1" ("number", "type"); 
CREATE INDEX "multiprimary_table1_number_8d499fc9_idx" ON "multiprimary_table1" ("number", "type"); 

COMMIT; 

Django的在我的表中添加ID和設置主鍵ID列,我該如何解決呢? 而且我不知道如何定義多個外鍵,有人可以告訴我嗎?

+2

Django不支持組合鍵。有一些工作需要增加支持,但我不知道目前的狀況。 – knbk

回答