我希望用户输入产品名称和数量,然后使用查询显示库存是否可用

时间:2018-02-10 12:12:39

标签: python django

请更正我的代码或指导我做它给我一个错误....  错误

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>

1 个答案:

答案 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 }}