Django 查询集中的浮点数范围

1 投票
1 回答
5889 浏览
提问于 2025-04-17 06:22

我遇到了一个在Django的查询集中从未遇到过的问题。我有超过100,000条浮点数类型的记录,并且在一个数据模型类中有外键字段。我想做的是对这些记录进行查询,具体步骤如下:

  • 用户会输入一个值(v),比如1248.597290039063(浮点数),并指定精度(f),也就是小数点后要保留多少位数字。如果精度是5,那么我只会保留小数点后5位数字,比如1248.59729。我会从HTML模板中获取这个请求,然后在视图中进行后续操作。
  • 默认参数(p)= 0.000005
  • 新值(nv)= p * v
  • 最高范围(HR)= v + nv
  • 最低范围(LR)= v - nv
  • 现在,HR和LR就是我们要进行查询的范围。

所以,请只关注在这个范围内进行查询,特别是小数点后(固定)的部分?

如果问题不够清楚,请留言。我会尽力再解释清楚。

请指导我。

1 个回答

8

如果你已经计算出了范围的高低值,那么在Django中你可以用一个简单的范围查询来获取数据:

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

或者,稍微简短一点:

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

(当然,你需要把'my_model'和'field'替换成你实际使用的模型和字段名称)

撰写回答