Django - 许多前锋与外键倒退

时间:2014-07-09 10:42:06

标签: sql django django-models foreign-keys many-to-many

考虑以下两个例子:

实施例1:模型A>多对多>模型B的

class ModelA(models.Model):
    model_b = models.ManyToManyField('ModelB')

实施例2:模型B> foreignkey>模型A

class ModelB(models.Model):
    model_a = models.ForeignKey('ModelA')

除了要求/个人偏好之外,是否有理由选择其中一种?

有关此选择的重要考虑因素吗?

编辑: 外键不允许modelB拥有多个modelA,但是对于这个例子,我们假设这不是必需的。

2 个答案:

答案 0 :(得分:4)

为什么当你真的不想要多对多的关系时,你会选择ManyToManyField?由于它们需要链接表,因此它们的效率明显低于ForeignKey,后者是表之间的简单连接。除非你确实需要这些功能,否则不要使用它们。

答案 1 :(得分:0)

如果您在一个表或另一个表上指定多对多关系,并且该关系始终由第三个表表示,那么它确实没有多大区别。

您可能希望尝试一些代码示例,看看是否有任何表示可以使您的代码更具可读性。