Sql Django-多对多向前与外键向后
考虑以下两个例子: 示例1:模型A>多对多>模型BSql Django-多对多向前与外键向后,sql,django,django-models,foreign-keys,many-to-many,Sql,Django,Django Models,Foreign Keys,Many To Many,考虑以下两个例子: 示例1:模型A>多对多>模型B class ModelA(models.Model): model_b = models.ManyToManyField('ModelB') 示例2:B型>外键>A型 class ModelB(models.Model): model_a = models.ForeignKey('ModelA') 除了要求/个人偏好之外,是否有理由选择其中一个 是否有任何与此选择相关的重要考虑因素 编辑: 外键不允许modelB具有多个mo
class ModelA(models.Model):
model_b = models.ManyToManyField('ModelB')
示例2:B型>外键>A型
class ModelB(models.Model):
model_a = models.ForeignKey('ModelA')
除了要求/个人偏好之外,是否有理由选择其中一个
是否有任何与此选择相关的重要考虑因素
编辑:
外键不允许modelB具有多个modelA,但在本例中,假设这不是一个要求。当您实际上不需要多对多关系时,为什么要选择多对多字段?因为它们需要一个链接表,所以它们的效率明显低于表间简单连接的ForeignKey。除非您确实需要功能,否则不要使用它们。当您实际上不想要多对多关系时,为什么要选择多对多字段?因为它们需要一个链接表,所以它们的效率明显低于表间简单连接的ForeignKey。除非您确实需要功能,否则不要使用它们。在一个表上指定多对多关系与在另一个表上指定多对多关系没有多大区别,因为该关系始终由第三个表表示
您可能希望使用一些代码示例进行实验,以查看其中一种表示形式是否会使代码更具可读性。如果关系始终由第三个表表示,那么在一个表上指定多对多关系与在另一个表上指定多对多关系实际上没有多大区别 您可能希望使用一些代码示例进行实验,以查看其中一种表示形式是否能使您的代码更具可读性。假设这不是一项要求。-那么,不要使用,因为密钥就足够了。让我们假设这不是一个要求。-那就别用了,foriegnkey就足够了。