我目前有三种模式,但我不确定如何设计这个最好的。一个是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这样的模型来链接歌曲和节目。 –