I am trying to convert the model instances into a JSON object and then 
according to the value selected in the dropdown menu, I want to assign its 
amount to the `line_one_unit_price` text field in the form.

Javascript code:

    {{ 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>

I guess, I am getting the error at `data.find` because `.find` is used on 
an array whereas the constant `data` is not an array? How do I convert that 
JSON object into an array? how do I assign the amount of the `title` 
selected in the forms to the `line_one_unit_price`?

[image: Screenshot 2022-07-09 232808.jpg]

When I click some title from the dropdown, I want the amount to be 
displayed in the `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

Thanks.

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/5edb2e69-fec9-4140-8658-3f409f795434n%40googlegroups.com.

Reply via email to