2012-02-24 92 views
0

我在这里打墙,我知道这是一个简单的问题,但我无法在这里找到它。如何表达Django ManyToMany关系?

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

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

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

+0

也许这是你的:) [链接](http://stackoverflow.com/questions/723293/inserting-object-with-manytomany-in-django) – 2012-02-24 05:54:03

回答

0

在Django文档它指出

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

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

而且ForeignKey的定义是这样的:

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

因此,ManyToMany由django创建的关系创建的intermedalog表是1 to N

+0

我已经阅读文档,但仍然不知道答案是什么。感谢您向我解释! – 2012-02-28 22:34:34

0

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

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

1
user --many2many-- group 

user 1----n user_group n---1 group 
+0

只有1例...它可能是不同的。它真的是你的工作/责任,使中间表像你需要它 – 2012-02-24 13:44:07

相关问题