考虑以下两个例子:
实施例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,但是对于这个例子,我们假设这不是必需的。
答案 0 :(得分:4)
为什么当你真的不想要多对多的关系时,你会选择ManyToManyField?由于它们需要链接表,因此它们的效率明显低于ForeignKey,后者是表之间的简单连接。除非你确实需要这些功能,否则不要使用它们。
答案 1 :(得分:0)
如果您在一个表或另一个表上指定多对多关系,并且该关系始终由第三个表表示,那么它确实没有多大区别。
您可能希望尝试一些代码示例,看看是否有任何表示可以使您的代码更具可读性。