Доступ к значениям в массиве JSON и последующее присвоение его текстовому полю

Мой вопрос очень прост. Используя DjangoJSONEncoder, я могу отправить JSON массив экземпляров Model с полями, product_number(pk) и amount в качестве контекста в HTML файл. Затем я получаю доступ к массиву JSON obj с помощью некоторого кода javascript.

Код JS:

{{ 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){
            alert(data);
            document.getElementById('id_line_one_unit_price').value = data[event.target.value].fields.amount
};

</script>

Массив:

[[1, 56000], [2, 55000]]

Я думаю, что это строка, а не массив? У меня есть выпадающее поле, и когда пользователь выбирает название из выпадающего меню, оно возвращает первичный ключ этого title, а затем, используя его, я хочу получить сумму этого product из массива JSON и затем установить значение текстового поля с этой суммой. ss

views.py:

def add_invoice(request):
  form = InvoiceForm(request.POST or None)
  total_invoices = Invoice.objects.count()
  queryset = Invoice.objects.order_by('-invoice_date')[:6]

  dataa = Inventory.objects.values_list('product_number','amount')
  data = json.dumps(list(dataa), cls=DjangoJSONEncoder)

  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:

from django.db import models

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

Я заметил, что код javascript на самом деле работает правильно, Он отправляет i-й элемент, т.е. если выбранный заголовок имеет первичный ключ 1, то [ возвращается как результат, а если первичный ключ 2, то выход 1. Массив или строка(?) - это [[1, 56000], [2, 55000]] Таким образом, это в основном рассматривает переменную data как строку. Я хочу, чтобы это был словарь? Как я могу преобразовать строку, которую я получаю, в словарь, а затем сопоставить результат суммы с его текстовыми полями?

Спасибо.

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