Django - 你如何决定放入外键的型号?

时间:2017-12-09 10:48:36

标签: python sql django django-models

假设我有两个看起来像这样的模型:

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之间有什么区别?

如何决定这样的事情?

1 个答案:

答案 0 :(得分:1)

那些会做完全不同的事情。

就像你说的,ForeignKey是一对多的关系。如果你把它放在Track上,这意味着许多曲目属于一个专辑(换句话说,一个专辑有很多曲目)。如果你把它放在专辑上,这意味着很多专辑都属于一首曲目,这显然是不对的。

选择的情况是您使用ManyToManyField时的情况。在那里,双方都是"很多",所以选择哪一方开场是纯语义的。

编辑再次,它们会产生不同的效果。多对多意味着双方可以有多个项目:一个专辑可以有很多曲目一个曲目可以属于许多专辑。