Кодирование в UpdateVIEW из django
У меня есть кнопка редактирования на моем webapp, которая ссылается на UpdateView с Django. Проблема в том, что я не знаю способа выполнения вычислений перед сохранением изменений в базе данных на UpdateView.
Когда я создаю регистр, он сохраняется после прохождения через некоторые вычисления, функции и т.д., и для создания он вызывает эту функцию:
def post_create(request):
form = InsereCursosForm()
if(request.method == 'POST'):
form = InsereCursosForm(request.POST)
print(form)
if(form.is_valid()):
def calculos():
post_nmCurso = form.cleaned_data['nmCurso']
post_acFaculdade = form.cleaned_data['acFaculdade']
post_nuMaterias = form.cleaned_data['nuMaterias']
post_nmInstituicao = form.cleaned_data['nmInstituicao']
post_nmPlayer = form.cleaned_data['nmPlayer']
post_nuHoras = form.cleaned_data['nuHoras']
post_acWorkshop = form.cleaned_data['acWorkshop']
post_acImplementacao = form.cleaned_data['acImplementacao']
post_acComunik = form.cleaned_data['acComunik']
def seFaculdade(post_acFaculdade, post_nuMaterias, post_nuHoras):
if post_acFaculdade == True:
post_nuHoras = post_nuMaterias * 4
return post_nuHoras
else:
return post_nuHoras
post_nuHoras = seFaculdade(post_acFaculdade, post_nuMaterias, post_nuHoras)
def ptWorkshopsF(post_nuHoras, post_acWorkshop):
if post_acWorkshop == True:
v = post_nuHoras * Decimal('0.2')
return v
else:
return 0
def ptImplementacaoF(post_nuHoras, post_acImplementacao):
if post_acImplementacao == True:
return post_nuHoras * Decimal('0.45')
else:
return 0
def ptComunikF(post_nuHoras, post_acComunik):
if post_acComunik == True:
return post_nuHoras * Decimal('0.1')
else:
return 0
getcontext().prec=2
post_ptHoras = float((Decimal(post_nuHoras * 0.45))/Decimal('1'))
post_ptWorkshop = float(Decimal(ptWorkshopsF(post_nuHoras, post_acWorkshop))/Decimal('1'))
post_ptImplementacao = float(Decimal(ptImplementacaoF(post_nuHoras, post_acImplementacao))/Decimal('1'))
post_ptComunik = float(Decimal(ptComunikF(post_nuHoras, post_acComunik))/Decimal('1'))
new_post = Cursos(nmCurso=post_nmCurso, acFaculdade=post_acFaculdade, nuMaterias=post_nuMaterias,nmInstituicao=post_nmInstituicao, nmPlayer=post_nmPlayer,nuHoras=post_nuHoras, ptHoras=post_ptHoras,acWorkshop = post_acWorkshop, ptWorkshop=post_ptWorkshop ,acImplementacao= post_acImplementacao, ptImplementacao=post_ptImplementacao,acComunik = post_acComunik, ptComunik=post_ptComunik)
print(new_post)
new_post.save()
calculos()
return redirect('app:lista_curso')
elif(request.method == 'GET'):
return render(request, 'app/curso_forms.html', {'form': form})
Правильно знать, что updateView это:
class CursosUpdate(UpdateView):
template_name = "app/curso_update.html"
model = Cursos
fields = [
'nmCurso',
'acFaculdade',
'nuMaterias',
'nmInstituicao',
'nmPlayer',
'nuHoras',
'acWorkshop',
'acImplementacao',
'acComunik']
context_object_name = 'cursos'
success_url = reverse_lazy("app:lista_curso")