【问题标题】:Must Django ManyToManyField association tables have a surrogate key?Django ManyToManyField 关联表必须有代理键吗?
【发布时间】:2010-12-09 02:51:31
【问题描述】:

我正在将现有的数据库结构映射到 Django 模型中。我有一个多对多结构,其中关联表是自然键:

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

【问题讨论】:

    标签: django database-design django-models surrogate-key natural-key


    【解决方案1】:

    我不认为 Django - 就 1.1 而言 - 允许您想要的复合主键。

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

    所以,我会说除非 1.2(2010 年 3 月?)对上述票证实施修复,否则您将不得不修改您的数据库表。

    【讨论】:

      猜你喜欢
      • 2014-09-11
      • 2014-08-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-22
      • 1970-01-01
      • 2015-07-17
      • 2014-09-15
      • 1970-01-01
      相关资源
      最近更新 更多