Как мне выразить отношения Django ManyToMany? - PullRequest
0 голосов
/ 24 февраля 2012

Я бью стену здесь и знаю, что это простой вопрос, но я не смог найти его здесь.

На диаграмме ER, какова будет связь между двумя объектами, имеющими отношение ManyToMany, с точки зрения промежуточной таблицы?

Example:
item ---- item_facts ---- fact

Я чувствую, что это должно быть один на один, но я не совсем уверен.

Ответы [ 3 ]

1 голос
/ 24 февраля 2012
user --many2many-- group

user  1----n user_group n---1 group
0 голосов
/ 28 февраля 2012

В документации django говорится, что

Отношение ко многим. Требуется позиционный аргумент: класс, к которому относится модель. Это работает точно так же, как и для ForeignKey, включая все параметры, касающиеся рекурсивных и ленивых отношений.

За кулисами Django создает промежуточную таблицу соединений для представления отношения «многие ко многим». По умолчанию это имя таблицы создается с использованием имени поля «многие ко многим» и модели, в которой оно содержится. Поскольку некоторые базы данных не поддерживают имена таблиц выше определенной длины, эти имена таблиц будут автоматически обрезаны до 64 символов, и будет использован хеш уникальности. Это означает, что вы можете увидеть имена таблиц вроде author_books_9cdf4; это совершенно нормально. Вы можете вручную указать имя таблицы соединений, используя опцию db_table.

И определение ForeignKey похоже на:

Отношения многие-к-одному. Требуется позиционный аргумент: класс, к которому относится модель.

Итак, отношения ManyToMany, созданные django, создают промежуточные таблицы, которые 1 to N.

0 голосов
/ 24 февраля 2012

Не уверен, что вопрос здесь.Вы говорите, что два объекта имеют отношение «многие ко многим».

Если два объекта (разрешенные таблицы) имеют отношение «многие ко многим», независимо от того, включаете ли вы промежуточную таблицу в диаграмму или нетне имеет значения.У них все еще есть отношения многие ко многим.

...