在 Django 中获取外键 ID 时出错
error while getting foreignkey id in django
我是 django.i 的新人,我正在尝试使用 django 制作发票生成器应用程序。员工输入客户 ID 并将其带到发票 page.in 发票页面,员工可以输入产品 ID,产品和客户信息将添加到发票模型对象中。所以我想添加所有产品对于相同的发票 ID 或想按客户 ID 过滤,这将获得客户 ID 的所有发票,这里是代码
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})
它显示错误 TypeError: cannot unpack non-iterable builtin_function_or_method object
可能是这一行的错误..
cust_id = Invoice.objects.get(id, customers=customer.id)
改成
cust_id = Invoice.objects.get(id=customer.id, customers=customer.id)
如果它不起作用请告诉我,然后再向我展示您的模板文件..
cust_id = Invoice.objects.get(id=customer.id)
获取:获取单个对象并将其分配给变量。所以这应该可以纠正你的错误
我是 django.i 的新人,我正在尝试使用 django 制作发票生成器应用程序。员工输入客户 ID 并将其带到发票 page.in 发票页面,员工可以输入产品 ID,产品和客户信息将添加到发票模型对象中。所以我想添加所有产品对于相同的发票 ID 或想按客户 ID 过滤,这将获得客户 ID 的所有发票,这里是代码 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})
它显示错误 TypeError: cannot unpack non-iterable builtin_function_or_method object
可能是这一行的错误..
cust_id = Invoice.objects.get(id, customers=customer.id)
改成
cust_id = Invoice.objects.get(id=customer.id, customers=customer.id)
如果它不起作用请告诉我,然后再向我展示您的模板文件..
cust_id = Invoice.objects.get(id=customer.id)
获取:获取单个对象并将其分配给变量。所以这应该可以纠正你的错误