2017-12-09 14 views
-1

は、私はこのようになります二つのモデルを考えてみましょう: Django - 外部キーを入れるモデルはどうやって決めますか?

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) 

Albumモデルにmany-to-manyを持つ対TrackモデルにForeignKey(1対多)の関係を置くことの違いは何ですか

このようなことをどうやって決めますか?

答えて

1

これらはまったく異なるものです。

あなたが言ったように、ForeignKeyは1対多の関係です。それをトラックに入れると、それは1つのアルバムに多くのトラックが属していることを意味します(つまり、1つのアルバムには多くのトラックがあります)。それをアルバムに入れると、それは多くのアルバムが1つのトラックに属していることを意味しています。これは明らかに正しくありません。

である状況は、ManyToManyFieldを使用している場合です。そこでは、両側は「多数」なので、フィールドを置く側の選択は純粋に意味のあるものです。

これらもまた、異なる効果があります。多対多の場合は、両面に複数の項目を含めることができます。アルバムには多くのトラックが含まれますトラックは多くのアルバムに属することができます。

+0

ダング、私はそれが私が尋ねようとしていたものだと思います。それはManyToMany対oneToManyだった。私は質問を編集させてください。 – scottc11