我如何表达Django ManyToMany关系?

时间:2012-02-24 05:49:20

标签: django database-design many-to-many

我在这里撞墙,我知道这是一个简单的问题,但我无法在这里找到它。

在ER图中,就中间表而言,具有ManyToMany关系的两个对象之间的关系是什么?

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

我觉得它应该是一对一的,但我并不完全确定。

3 个答案:

答案 0 :(得分:1)

user --many2many-- group

user  1----n user_group n---1 group

答案 1 :(得分:0)

不确定这里的问题是什么。你说这两个对象有多对多的关系。

如果两个对象(有权,表)具有多对多关系,那么无论是否在图中包含中间表,都是无关紧要的。他们仍然有多对多的关系。

答案 2 :(得分:0)

在django文档中,它说明了

  

多对多的关系。需要位置参数:与模型相关的类。这与ForeignKey完全相同,包括有关递归和惰性关系的所有选项。

     

在幕后,Django创建了一个中间连接表来表示多对多关系。默认情况下,此表名称是使用多对多字段的名称和包含它的模型生成的。由于某些数据库不支持超过一定长度的表名,因此这些表名将自动截断为64个字符,并将使用唯一性哈希。这意味着你可能会看到像author_books_9cdf4这样的表名;这是完全正常的。您可以使用db_table选项手动提供连接表的名称。

ForeignKey的定义如下:

  

多对一的关系。需要一个位置参数:与模型相关的类。

因此,由django创建的ManyToMany关系正在创建1 to N的中间表。