假设我有两个看起来像这样的模型:
class Album(models.Model):
pub_date = models.DateTimeField(auto_now_add=True)
title = models.CharField(max_length=250, blank=False, unique_for_date="pub_date")
class Track(models.Model):
title = models.CharField(max_length=250, blank=False, unique_for_date="pub_date")
album = models.ForeignKey(Album)
在ForeignKey
模型上设置Track
(一对多)关系与在many-to-many
模型上设置Album
之间有什么区别?
如何决定这样的事情?
答案 0 :(得分:1)
那些会做完全不同的事情。
就像你说的,ForeignKey是一对多的关系。如果你把它放在Track上,这意味着许多曲目属于一个专辑(换句话说,一个专辑有很多曲目)。如果你把它放在专辑上,这意味着很多专辑都属于一首曲目,这显然是不对的。
选择的情况是您使用ManyToManyField时的情况。在那里,双方都是"很多",所以选择哪一方开场是纯语义的。
编辑再次,它们会产生不同的效果。多对多意味着双方可以有多个项目:一个专辑可以有很多曲目和一个曲目可以属于许多专辑。