代码之家  ›  专栏  ›  技术社区  ›  Gunnlaugur Briem

Django ManytomanyField关联表必须具有代理键吗?

  •  1
  • Gunnlaugur Briem  · 技术社区  · 15 年前

    我正在将现有的数据库结构映射到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)
                          );
    

    没有办法让姜戈的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 回复  |  直到 15 年前
        1
  •  1
  •   cethegeek    15 年前

    我不认为django(就1.1而言)允许您想要的组合主键。

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

    所以,我想说,除非1.2(2010年3月?)为上面的票据实现修复,您将不得不修改数据库表。

    推荐文章