Как передать переменную из представления в модель в Django
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")
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
# create a viewset
class VoiceViewSet(viewsets.ModelViewSet):
# define queryset
queryset = Voiceapi.objects.all()
# specify serializer to be used
serializer_class = VoiceSerializer
#
print(Voiceapi.objects.values())
datas = Voiceapi.objects.values()
print(datas)
for i in datas:
try:
print("Audio File-->",i['name'])
audio_url = i['name']
audio_id = i['id']
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)
Voiceapi.objects.filter(pk=audio_id).update(voice_text=text)
except:
print('Audio Not Clear')
audio = "/home/venpep/voicetotext/messages/media/test.wav"
VoiceRecognizer(audio,audio_id)
except:
print("Not audio file")
Мне нужно передать переменную "text" из моего view.py в models.py, чтобы установить значение по умолчанию в voice_text. Есть ли какое-нибудь решение, чтобы получить текст со страницы просмотра. Переменная text является базовой строкой, которую нужно передать в models.py
Как я понял из вашего комментария, вы можете переопределить метод save в django model
и поместить свою логику, таким образом вы сможете редактировать значение поля перед сохранением и отправлять его в ответ
class Voiceapi(models.Model):
...
def save(self, *args, **kwargs):
...