范围过滤器在django中不起作用

时间:2016-10-06 07:49:52

标签: python django

我想根据两个值过滤我的查询集。

我想要两个数字之间的结果。我正在尝试一些代码,但它不起作用。它没有给我正确的结果。 我的代码

def project(request):
    try:

        proTitle = request.GET.get('title')
        ProDescription = request.GET.get('description')
        funAria = request.GET.get('funAria')
        femaleReq = request.GET.get('femaleReq')
        cost_gte = int(request.GET.get('cost_gte'))
        cost_lte = int(request.GET.get('cost_lte'))
    except:
        pass


    if cost_gte and cost_lte :
        list4 = []

        result = Project.objects.filter(budgeted_cost__gte=cost_gte , budgeted_cost__lte=cost_lte )
        print result
        for res in result:

            list4.append(res.project_id)
        data ={'cost result':list4}
        return HttpResponse(json.dumps(data))




return HttpResponse(json.dumps(data), content_type='application/json')

有时候它会返回所有产品,有些时候它不返回任何产品。我无法理解为什么它不能正常工作。

我也尝试按范围

result = Product.objects.filter(cost__range=(cost_gte,cost_lte))

但行为也一样。请指导我做错了什么。

1 个答案:

答案 0 :(得分:1)

在python中使用range时,它意味着range1 <= i < range2,但您要查询的过滤器是range1 <= i <= range2,因此您不应期待range而是

 result = Project.objects.filter(budgeted_cost__gte=cost_gte , 
budgeted_cost__lte=cost_lte ) 

获得所需的输出。