Django:比较两个查询集

时间:2017-10-25 12:16:36

标签: python django

我有一个名为Music的模型,它有艺术家ManyToManyField。我想验证艺术家名称字段是 unique_together 。 Django不会允许将ManyToManyField放入Meta类的unique_together列表中。以下是我正在做的事情,我正在给我一个错误

  

<“音乐:Hello>在使用多对多关系之前,需要为字段”id“设置一个值。

class Music(models.Model):
    name = models.CharField(max_length=256)
    artist = models.ManyToManyField(Performer, related_name='all_songs')
    file = models.FileField(upload_to='music/')

    def save(self, *args, **kwargs):
        similar_musics = self.__class__.objects.filter(name=self.name)
        for music in similar_musics:
            artists = music.artist.all()
            diff = set(artists.all()).difference(set(self.artist.all()))
            if diff:
                raise ValidationError('This song seems to be already created!')

        super(Music, self).save(*args, **kwargs)

最简单的验证方式是什么,以便艺术家和名称字段一致?
另外,我想压缩音乐文件并将我的压缩音乐流式传输到浏览器和在浏览器中解压缩收到的部分并播放。因此,它可能类似于 spotify ,但非常简单的版本。什么是最好的方法来完成这项任务?提前谢谢

0 个答案:

没有答案