Uncaught TypeError: data.find не является функцией

Я пытаюсь преобразовать экземпляры модели в объект JSON, а затем в соответствии со значением, выбранным в выпадающем меню, я хочу присвоить его сумму текстовому полю line_one_unit_price в форме.

Код Javascript:

{{ data|json_script:"hello-data" }}
<script type="text/javascript">
    const data = JSON.parse(document.getElementById('hello-data').textContent);

    document.getElementById('id_line_one').onchange = function(event){
    let elementInData = data.find(() => item.pk == event.target.value);
    document.getElementById('id_line_one_unit_price').value = elementInData && elementInData.amount ? elementInData.amount : 0;
};

</script>

Я предполагаю, что получаю ошибку в data.find, потому что .find используется в массиве, в то время как константа data не является массивом? Как мне преобразовать этот JSON объект в массив? Как мне присвоить количество title, выбранное в формах, line_one_unit_price?

ss

Когда я нажимаю на какое-либо название из выпадающего списка, я хочу, чтобы сумма отображалась в Unit Price.

views.py:

def add_invoice(request):
  form = InvoiceForm(request.POST or None)
  data = serializers.serialize("json", Inventory.objects.all())
  total_invoices = Invoice.objects.count()
  queryset = Invoice.objects.order_by('-invoice_date')[:6]

  if form.is_valid():
    form.save()
    messages.success(request, 'Successfully Saved')
    return redirect('/invoice/list_invoice')
  context = {
    "form": form,
    "title": "New Invoice",
    "total_invoices": total_invoices,
    "queryset": queryset,
    "data": data,
  }
  return render(request, "entry.html", context)

models.py:

class Inventory(models.Model):
  product_number = models.IntegerField(primary_key=True)
  product = models.TextField(max_length=3000, default='', blank=True, null=True)
  title = models.CharField('Title', max_length=120, default='', blank=True, unique=True)
  amount = models.IntegerField('Unit Price', default=0, blank=True, null=True)

  def __str__(self):
    return self.title

Спасибо.

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