1

我将现有的数据库结构映射到Django模型中。我有一个多对多的结构,其关联表是自然键控的:必须Django ManyToManyField关联表有一个代理键吗?

CREATE TABLE foo (id INTEGER PRIMARY KEY); 
CREATE TABLE bar (id INTEGER PRIMARY KEY); 
CREATE TABLE foo2bar (foo_id INTEGER REFERENCES foo(id), 
         bar_id INTEGER REFERENCES bar(id), 
         PRIMARY KEY (foo_id, bar_id) 
        ); 

有没有办法让Django的ORM映射它?我必须更改foo2bar以使用代理键吗?例如。

CREATE TABLE foo2bar (id INTEGER PRIMARY KEY, 
         foo_id INTEGER REFERENCES foo(id), 
         bar_id INTEGER REFERENCES bar(id) 
        ); 
CREATE UNIQUE INDEX ix_foo2bar_uniq ON foo2bar (foo_id, bar_id); 

回答

1

我不认为Django - 只要1.1 - 允许像你想要的复合主键。

参见:http://code.djangoproject.com/ticket/373

所以,我要说的是,除非1.2(2010年3月?)实现上面的票一个解决方法,你将不得不修改数据库表。

+0

同样值得一读:http://code.djangoproject.com/wiki/MultipleColumnPrimaryKeys – cethegeek 2009-10-22 15:14:46

+0

看起来足以让我满意 - 谢谢! – 2009-10-22 15:45:17

相关问题