私は現在3つのモデルを持っていますが、これをどのように最高に設計するかはわかりません。一つはSong
モデル、1はArtist
であると私はわからなかった最終的Show
モデルDjango多対多の関係
class Artist(models.Model):
name = models.CharField(max_length=255)
label = models.CharField(max_length=255, null=True)
def __str__(self):
return self.name
class Show(models.Model):
name = models.CharField(max_length=255)
def __str__(self):
return self.name
class Song(models.Model):
title = models.CharField(max_length=255)
artist = models.ManyToManyField('Artist')
show = models.ManyToManyField('Show')
duration = models.FloatField()
def __str__(self):
return '%s - %s (%s)' % (self.title, [artist.name for artist in self.artist.all()], self.duration)
のものが関係しているです。アーティストには曲がありますが、曲には複数のアーティストが参加することもできますし、ショーは複数の曲を持つことができます(またはいつも持っています)。 ManyToMany
フィールドの正しいデザインは何でしょうか?
私はあなたのモデル "ショー" は何を表しているんわかりません、どうか明らかにしてください。だから、あなたはすべてのショーのパフォーマンスごとに "ソング"を複製するつもりですか?それは賢明に見えません。 ShowPerformanceのような、曲とショーをリンクするモデルを使用することをお勧めします。 –