Home > Enterprise >  error while getting foreignkey id in django
error while getting foreignkey id in django

Time:10-03

I am new in django.i am trying to make a invoice generator app with django . where an employee inputs the customer id and it takes to the invoice page.in the invoice page the employe can enter a product id and the product and customer info will be added to invoice model object .so i want to add all the products for the same invoice id or want to filter by customer id which will get all the invoices for the customer id here is the code models.py

from django.db import models
from account.models import Customer
from product.models import Product

class Invoice(models.Model):
    products = models.ForeignKey(Product, on_delete=models.CASCADE, default=1)
    customers = models.ForeignKey(Customer, on_delete=models.CASCADE, default=4)
    date = models.DateTimeField(auto_now_add=True)
    total = models.BigIntegerField(default=0)
    quantity = models.IntegerField(default=0)

views.py

def billingform(request):
if request.method == "POST":
    cid = request.POST["customerId"]
    customer = Customer.objects.get(id=cid)
    request.session['customerId'] = cid
    return redirect('invoice')
return render(request, 'bform.html')
def invoice(request):
    cid = request.session.get('customerId')
    customer = Customer.objects.get(id=cid)
    if request.method == "POST":
        pd = request.POST["product_id"]
        qt = int(request.POST["quantity"])
        product = Product.objects.get(id=pd)
        pd_price = int(product.selling_price)
        total = pd_price*qt
        pd_name = product.name
        Invoice.objects.create(products = product,
                                    quantity = qt, total=total, customers = customer)
        cust_id = Invoice.objects.get(id, customers=customer.id)
        product_name = cust_id.products
        product_quantity = cust_id.quantity
        product_total = cust_id.total
        return render(request, 'invoice.html', { "total":product_total, "customer": customer, 
                     "product_names": product_name,
                     "quantitys": product_quantity,})
    else:
        return render(request, 'invoice.html', {"customers": customer})

it shows the error TypeError: cannot unpack non-iterable builtin_function_or_method object

CodePudding user response:

Maybe the mistake in this line..

cust_id = Invoice.objects.get(id, customers=customer.id)

Change into

cust_id = Invoice.objects.get(id=customer.id, customers=customer.id)

And let me know if it is not working then show me your template file also..

CodePudding user response:

cust_id = Invoice.objects.get(id=customer.id) Get: fetches a single object and assign it to the variable. So this should correct your mistake

  • Related