AttributeError at /invoice/add_invoice/ 'int' object has no attribute '_meta' while using in_bulk

2022-07-10 Thread Kiran Chavan
I want to convert the model instances into a JSON object and then pass it 
to the HTML file. However, I get an AttributeError at this line:
`data = serializers.serialize("json", Inventory.objects.in_bulk())`

The full `views.py`:

def add_invoice(request):
  form = InvoiceForm(request.POST or None)
  data = serializers.serialize("json", Inventory.objects.in_bulk())
  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)

The Javascript code:

{{ data|json_script:"hello-data" }}

const data = 
JSON.parse(document.getElementById('hello-data').textContent);

document.getElementById('id_line_one').onchange = function(event){
document.getElementById('id_line_one_unit_price').value = 
data[event.target.value].fields.amount;
};



`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

How can I pass that JSON object and assign the amount value to the text 
field according to the object selected in the dropdown? Thanks
[image: Screenshot 2022-07-09 232808.jpg]

-- 
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/6176f7fe-9f50-4380-b044-3e46f2219c8fn%40googlegroups.com.


Uncaught TypeError: data.find is not a function

2022-07-10 Thread Kiran Chavan
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" }}

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;
};



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.