关于浮点范围的Django查询集

时间:2011-11-15 14:19:55

标签: 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是应该进行查询的搜索空间。

那么,请仅关注在小数点(固定)之后查询范围

如果问题不够明确,请发表评论。我会再次尝试。

指导我

1 个答案:

答案 0 :(得分:6)

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

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

或者更短:

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

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