2016-10-06 26 views
1

我想根據兩個值過濾我的查詢集。範圍過濾器不能在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') 

一些時間返回所有的產品和一段時間它返回none.I不能明白爲什麼它不工作。

我也通過一系列

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

嘗試,但也表現same.Please指導我什麼,我做錯了。

+3

也許'cost__rage'→'cost__range'? –

+0

如果傳遞給'filter'的值不同,結果顯然不一樣。嘗試使用固定值進行測試(*不是來自'request.GET' *的測試),看看會發生什麼 –

+1

除了縮進和拼寫錯誤之外,這裏沒有太多錯誤。我們需要查看模型,實際數據和實際使用的值。但是,特別是這似乎並不是你真正的代碼(當你在這裏鍵入代碼時會發生錯別字和縮進),所以可能會有另一個我們看不到的問題,因爲你沒有複製和粘貼。 – RemcoGerlich

回答

0

在蟒蛇當您使用range這意味着range1 <= i < range2,但你正在尋找您的查詢過濾器是range1 <= i <= range2,所以你不應該期待range,而不是去

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

,從而獲得所需的輸出。