请更正我的代码或指导我做它给我一个错误.... 错误
Exception Type: AttributeError
Exception Value:
'QuerySet' object has no attribute 'quantity_onhand'
我的功能
def productsearch(request):
product=request.GET.get('product')
quantity=request.GET.get('quantity')
product_result=Product.objects.all().filter(product_id=product)
if ('quantity') > product_result.quantity_onhand:
print('stock is not available')
return render(request,'product/productlocation.html',{'product_result' : product_result,'quantity_result':quantity_result, 'product': product,'quantity':quantity})
模板......
<body>
{% if quantity_result %}
{% for r in quantity_result %}
{{r.quantity_onhand}}
{% endfor %}
{% else %}
<h3>no results</h3>
{% endif %}
</body>
答案 0 :(得分:0)
这里有六个问题。
首先,filter
始终返回一个查询集,因此您会看到错误。您传递了确切的ID,因此您应该使用get
:
product_result = Product.objects.all().get(product_id=product)
接下来,您的if
语句会比较文字值"quantity"
。您的意思是比较变量quantity
的值。但是,由于该值直接来自查询字典,因此它是一个字符串;你应该将它转换为int:
if int(quantity) > product_result.quantity_onhand:
接下来,没有必要打印错误信息;你需要将它返回到你的模板。
第四,你没有在视图中定义任何名为quantity_result
的内容,因此你无法在render()
来电中引用它;我不确定你为什么这样做。
第五,在模板中,你正在迭代quantity_result
,这又不存在;如果您的意思是product_result
,那么现在就是单个产品项目,因此您无法对其进行迭代。您应该删除for循环并只访问{{ product_result.quantity_onhand }}
。