问题描述
我正在尝试制作一个简单的API,该API可以接收音频文件,对其进行逆转并同时存储它们。
它可以接受文件,并覆盖我颠倒的perform_create()
方法。但是现在我找不到用反向文件更新记录的方法。
这是我的观点
class SoundViewSet(viewsets.ModelViewSet):
queryset = Sound.objects.all().order_by('id')
serializer_class = SoundSerializer
def perform_create(self,serializer):
serializer.save()
sound = Sound.objects.last()
root = settings.MEDIA_ROOT.replace('/media','')
root = root + sound.audio.url
p = Path(root)
clip = AudioSegment.from_wav(p)
rev = clip.reverse()
sound.reversedaudio = rev
serializer = SoundSerializer(data=sound)
serializer.is_valid()
Sound.objects.filter(id=sound.id).update(reversedaudio=serializer.data.get('reversedaudio'))
它返回NULL值。我必须先将其传递给序列化程序,因为必须为JSON解析音频文件。
我只是似乎找不到一种简单的方法来调用序列化程序update(),例如perform_create()。
我尝试了Sound.objects.filter(id=sound.id).update(reversedaudio=sound.reversedaudio)
,但它的视图集已更新,文件未解析就上传了,基本上是垃圾。
这是我的序列化器类:
class SoundSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Sound
fields = ('name','audio','reversedaudio')
有人可以指出我所缺少的吗?
P.s。我是第一次使用DRF并在最后期限内工作,所以我宁愿不必自己定义所有内容,而只在可能的情况下围绕模型类进行工作。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)