1

我知道一个事实,如果我使用 Django 的 ORM,每个表都必须有一个主键列。不知何故,如果你有一个链接到表的 many_to_many 表(我们称它们为作者和书籍),你会得到类似的东西:

id     author_id     book_id
1      1             1
2      1             2
3      2             3
etc.

我遇到了一本书,其中建议避免使用“id”列并改为创建复合主键。这适用于 django 吗?

4

1 回答 1

2

您可以在直通表上创建一个复合主键(使用 ALTER TABLE)。您还可以从表中删除 id 列。这些都不会损害 django,因为 ManyToMany 字段在后端工作的方式无论如何都不会使用 id 列。

但是你应该注意,让复合 PK 在 django 中工作基本上是一个非首发。这对您来说不应该是一个问题,因为任何表都不应该有一个 ForeignKey 到您的直通表(至少出于我能想到的任何原因。

所以总结一下。复合主键不适用于 django。因此,如果您需要对具有复合 PK 的表使用 ForeignKey,那么您基本上就是 SOL。最后,这里没有关于使用复合 PK 的真正专业人士,但也没有真正的骗局(在这种情况下也是唯一的情况)。那你为什么要花时间担心这个呢?

于 2011-08-03T15:30:59.640 回答