Как вставить значение при выполнении запроса post в postman с помощью django
Views.py
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
from rest_framework import viewsets
import requests
import gdown
from pydub import AudioSegment
import speech_recognition as sr
from .serializers import *
from .models import *
import time
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
from urllib.request import urlopen
class VoiceViewSet(viewsets.ModelViewSet):
queryset = Voiceapi.objects.all()
serializer_class = VoiceSerializer
datas = Voiceapi.objects.values()
print(datas)
def post(self,request):
vc_api = Voiceapi.objects.all()
serializer = VoiceSerializer(vc_api,many=True)
for i in datas:
try:
print("Audio File-->",i['name'])
audio_url = i['name']
audio_id = i['id']
output = '/home/venpep/voicetotext/messages/media/sample2.ogg'
gdown.download(audio_url, output, quiet=False)
src = "/home/venpep/voicetotext/messages/media/sample2.ogg"
# time.sleep(15)
dst = "/home/venpep/voicetotext/messages/media/test.wav"
sound = AudioSegment.from_ogg(src)
sound.export(dst, format="wav")
# time.sleep(15)
def VoiceRecognizer(audio,audio_id):
r = sr.Recognizer()
with sr.AudioFile(audio) as source:
audio_text = r.listen(source)
try:
text = r.recognize_google(audio_text)
print(text)
except:
print('Audio Not Clear')
audio = "/home/venpep/voicetotext/messages/media/test.wav"
VoiceRecognizer(audio,audio_id)
except:
print("Not audio file")
Models.py
from django.db import models
class Voiceapi(models.Model):
id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=200)
voice_text = models.CharField(max_length=200,default="voice_data")
Serializer.py
from .models import *
class VoiceSerializer(serializers.HyperlinkedModelSerializer):
# specify model and fields
class Meta:
model = Voiceapi
fields = ('id', 'name', 'voice_text')
Когда я размещаю данные, "текст" из views.py должен вставляться в поле voice_text в базе данных models.py, где я задал значение по умолчанию. Есть ли какое-нибудь решение, чтобы я мог вставить текстовые данные в поле voice_text, когда запрос post будет выполнен.
Прямо сейчас мой вывод таков :
{ "id": 8, "name": "https://storage.googleapis.com/wtleu/assets/1166882/inbox/919944470015/5505314129517179.ogg", "voice_text": "voice_data". }
Требуемый вывод:
{ "id": 8, "name": "https://storage.googleapis.com/wtleu/assets/1166882/inbox/919944470015/5505314129517179.ogg", "voice_text": "Это текст голосового сообщения". }