我目前有三種模式,但我不確定如何設計這個最好的。一個是Song
模型,一個是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這樣的模型來鏈接歌曲和節目。 –