Должны ли таблицы ассоциаций Django ManyToManyField иметь суррогатный ключ? - PullRequest
1 голос
/ 22 октября 2009

Я сопоставляю существующую структуру базы данных с моделями 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 Ответ

1 голос
/ 22 октября 2009

Я не думаю, что Django - до 1.1 - допускает составные первичные ключи, как вы хотите.

См .: http://code.djangoproject.com/ticket/373

Итак, я бы сказал, что если 1.2 (март 2010?) Не внедрит исправление для указанного выше тикета, вам придется изменить таблицу базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...