关于浮点范围的Django查询集

thc*_*and 0 python django floating-point

我遇到了一个我在Django查询集中从未遇到过的问题.我在一个数据模型类中有超过1,00,000个浮点数据类型(记录)以及外键字段.我想要做的是用以下程序查询这些记录.

  • 用户将输入值(v),例如1248.597290039063(浮点)并像preicison(f)一样过滤(十进制后接受多少位数).如果精度为5,那么我将在小数点后仅取5个数字,例如(1248.59729).我将从html模板获取这些请求并在视图上执行休息操作.
  • 默认参数(p)= 0,000005
  • 新值(nv)= p*v
  • 最高范围(HR)= v + nv
  • 最低范围(LR)= v-nv
  • 现在,HR和LR是应该进行查询的搜索空间.

那么,请注意只关注小数点后的这个范围(固定)

如果问题不够清楚请做评论.我会再试一次.

引导我

Ian*_*and 6

如果您已经计算了范围的高端和低端,那么您可以在Django中使用简单范围查询:

objects = my_model.objects.filter(field__gte=LR, field__lte=HR)
Run Code Online (Sandbox Code Playgroud)

或者,有点短:

objects = my_model.objects.filter(field__range=(LR, HR))
Run Code Online (Sandbox Code Playgroud)

(当然,您必须将'my_model'和'field'替换为您的实际模型和字段名称)

  • 不,此过滤器应显示两个范围端点之间具有“字段”值的_所有_对象;这就是“__gte”、“__lte”和“__range”运算符的作用。 (2认同)