2011-11-15 72 views
0

我遇到了一個我在Django queryset中從未遇到過的問題。在一個數據模型類中,我有更多的1,00,000個浮點數據類型(記錄)以及外鍵字段。我試圖做的是用以下過程在這些記錄上查詢。關於浮點範圍的Django查詢集

  • 用戶將輸入值(v),例如1248.597290039063(浮點數)和像preicison(f)那樣過濾(在十進制之後接受多少個數字)。如果精度爲5,那麼我將在小數點後只取5個數字,例如(1248.59729)。我將從html模板中獲取這些請求,並在視圖上進行休息操作。
  • 默認參數(P)= 0,000005
  • 新值(NV)= P * V
  • 最高範圍(HR)= V + NV
  • 最低範圍(LR)= V- NV
  • 現在,HR和LR是查詢應該完成的搜索空間。

所以,請只專注於詢問這樣範圍小數點(固定)

如果問題不夠明確,請做評論。我會再次盡我所能。

指引我

回答

6

如果您已經計算出你的範圍的高端和低端,那麼你可以在Django使用一個簡單的範圍查詢:

objects = my_model.objects.filter(field__gte=LR, field__lte=HR) 

,或者稍短:

objects = my_model.objects.filter(field__range=(LR, HR)) 

(當然,您必須用您的實際模型和字段名稱替換'my_model'和'字段')

+0

也許我沒有解釋得很好。但我想要得到所有在最高和最低頻率範圍內的值。我認爲你的過濾只顯示兩個最高和最低的一個。 – thchand

+1

不,這個過濾器應該在兩個範圍端點之間顯示帶有「字段」值的_all_對象;這就是'__gte','__lte'和'__range'運算符所做的。 –