如何在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 (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...