【问题标题】:Django - how do you decide which model to put foreign key?Django - 你如何决定放置外键的模型?
【发布时间】:2017-12-09 10:48:35
【问题描述】:

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

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 模型上有什么区别?

如何决定这样的事情?

【问题讨论】:

    标签: python sql django django-models


    【解决方案1】:

    他们会做完全不同的事情。

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

    选择的情况是当您使用ManyToManyField 时。在那里,双方都是“多”,所以选择哪一方放置字段是纯粹的语义选择。

    编辑同样,这些具有不同的效果。多对多意味着双方可以有多个项目:一个专辑可以有许多曲目并且一个曲目可以属于许多专辑。

    【讨论】:

    • 当,我想这就是我想问的。这是一个多对多与一对多。让我编辑问题。
    猜你喜欢
    • 2021-06-29
    • 1970-01-01
    • 2019-11-17
    • 1970-01-01
    • 2013-01-17
    • 2010-10-05
    • 2013-02-21
    • 2015-03-07
    相关资源
    最近更新 更多