Как сделать вычисления на javascript из моего набора форм в django?

У меня есть сомнение, что происходит то, что мне уже удалось, чтобы моя первая форма внутри таблицы могла выполнять операции и представлять их.

Я также смог создать динамический набор форм.

Но теперь у меня возникла проблема: Я хочу, чтобы мой набор форм в Django выполнял различные вычисления и представлял их.

Есть идеи? javascript, который я разместил, я следовал ему из нескольких учебников, проблема становится сложной, потому что я должен использовать JS для расчетов и что он также является динамическим, я не знаю, с чего начать

Formset

Забудьте о формате, я все еще не установил HTML правильно ... Я просто хочу умножить зеленый вход (количество) на красный вход (цена за единицу), поместить итог в синий вход (общая цена), сложить синие и представить их в фиолетовом входе (итого)

Спасибо за помощь :D

Я поместил код, который я уже использовал

add-parts-row.js

function updateEmptyFormIDs(element,totalForms){
   var thisInput=element
   var currentName=element.attr('name')

   //THIS IS WHAT PREFIX REPLACES WITH totalForms
   var newName=currentName.replace(/__prefix__/g,totalForms)

   //this is what replaces name with the number totalForms
   thisInput.attr('name',newName)

   //this is what replaces id with the totalForms number
   thisInput.attr('id',"id_"+newName)


   var newFormRow=element.closest(".form-row");
   var newRowId="row_id_"+newName
   newFormRow.attr("id",newRowId)

   newFormRow.addClass("new-parent-row")

   var parentDiv=element.parent();
   parentDiv.attr("id","parent_id_"+newName)

   var inputLabel=parentDiv.find("label")
   inputLabel.attr("for","id_"+newName)

   return newFormRow

   }

// you click the button and it adds more rows

$( "#add_more" ).click(function(e) {
  var formId="id_form-TOTAL_FORMS"
  var emptyRow=$("#empty-row").clone();
  emptyRow.attr("id",null)
  var totalForms=parseInt($('#'+formId).val());
  var newFormRow;

 
  emptyRow.find("input, checkbox").each(function(){
        newFormRow=updateEmptyFormIDs($(this),totalForms)
  })

  $(".form-row:last").after(newFormRow)
  $('#'+formId).val(totalForms+1);
});

calculos.js


function multiplicar(){


    var quantity=parseInt(document.getElementById('id_quantity').value);
    var unit_price=document.getElementById('id_unit_price').value;
    var total_price=document.getElementById('id_total_price');
    total_price.value=quantity*unit_price;

}



function taxes_free() {
    var total_price=document.getElementById('id_total_price').value;
    var total=document.getElementById('id_total');

    if (document.getElementById('id_tax_free').checked){
      var libre_impuestos = total_price*0.24;
      total.value=total_price - libre_impuestos;
      }

    }


function totales(){

    var descuento=document.getElementById('id_descuento').value;
    var total=document.getElementById('id_total').value;
    totales=(descuento * total) / 100;
    document.getElementById("id_total").value = totales;

}

Вернуться на верх