Python 使用唱片集自动添加歌曲
我想制作一个基于Django的音乐库。所以,我有歌曲的基本模型,“商店”应用程序中的专辑和用户收藏的复制模型。我想知道,当用户创建某张专辑的副本时,有没有办法添加与该专辑相关的歌曲 商店应用程序的基本模型:Python 使用唱片集自动添加歌曲,python,django,django-models,Python,Django,Django Models,我想制作一个基于Django的音乐库。所以,我有歌曲的基本模型,“商店”应用程序中的专辑和用户收藏的复制模型。我想知道,当用户创建某张专辑的副本时,有没有办法添加与该专辑相关的歌曲 商店应用程序的基本模型: class Album(models.Model): artist = models.ForeignKey(Artist) name = models.CharField(max_length=128) year = models.IntegerField(defau
class Album(models.Model):
artist = models.ForeignKey(Artist)
name = models.CharField(max_length=128)
year = models.IntegerField(default=timezone.now().year)
genre = models.ForeignKey(Genre)
songs = models.ManyToManyField('Song', blank=True)
cover = models.ImageField(upload_to=cover_album_directory_path)
is_single = models.BooleanField()
is_ep = models.BooleanField()
is_compilation = models.BooleanField()
def __str__(self):
return self.name
class Song(models.Model):
artist = models.ForeignKey(Artist)
related_album = models.ForeignKey(Album)
album_position = models.IntegerField()
name = models.CharField(max_length=128)
lyrics = models.TextField(blank=True)
track = models.FileField(upload_to=song_directory_path)
def __str__(self):
return self.name
专辑和歌曲副本的型号:
class CopyAlbum(models.Model):
owner = models.ForeignKey(Library)
album = models.ForeignKey(Album, blank=True)
def __str__(self):
return self.album.name
class CopySong(models.Model):
owner = models.ForeignKey(Library)
song = models.ForeignKey(Song, blank=True)
def __str__(self):
return self.song.name
我真正需要的是:在我创建了一个复制相册之后,Django必须自动保存与相册相关的复制歌曲
谢谢您的帮助。您可以使用信号
在CopyAlbum中,CopySong模型文件:
from django.db.models.signals import post_save,post_delete
from django.dispatch import receiver
@receiver(post_save,sender=CopyAlbum)
def copy_songs(*args,**kwargs):
copy_album_instance = kwargs['instance']
... copy the songs ...
@receiver(post_delete,sender=CopyAlbum)
def delete_songs(*args,**kwargs):
copy_album_instance = kwargs['instance'] ## deleted, an instance w/o db record
... delete the songs ...
您可以将此功能添加到实际创建相册副本的方法中;但是你为什么要复制歌曲呢?您已经可以通过
copy\u album.album.song\u set
@Selcuk访问所有歌曲,从相册中删除一些歌曲怎么样?当我通过唱片副本删除歌曲时,它会从原始唱片中删除歌曲吗?