如何解决如何在Django rest框架中调用自定义序列化程序更新方法?
我正在尝试制作一个简单的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 举报,一经查实,本站将立刻删除。