开发者

Must Django ManyToManyField association tables have a surrogate key?

开发者 https://www.devze.com 2022-12-09 08:09 出处:网络
I\'m mapping an existing database structure into Django models. I have开发者_C百科 a many-to-many structure where the association table is natural-keyed:

I'm mapping an existing database structure into Django models. I have开发者_C百科 a many-to-many structure where the association table is natural-keyed:

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)
                      );

Is there no way to get Django's ORM to map this? Must I change foo2bar to use a surrogate key? E.g.

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);


I don't think Django - as far as 1.1 - allows for composite primary keys like you want.

See: http://code.djangoproject.com/ticket/373

So, I would say that unless 1.2 (March 2010?) implements a fix for the ticket above, you will have to modify your database table.

0

精彩评论

暂无评论...
验证码 换一张
取 消