【问题标题】:Django queryset on floating point range浮点范围上的 Django 查询集
【发布时间】:2011-11-16 01:05:50
【问题描述】:

我遇到了一个以前在 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 是应该进行查询的搜索空间。

那么,请只关注小数点(固定)之后的范围这样的查询?

如果问题不够清楚,请发表评论。我会再次努力的。

引导我

【问题讨论】:

    标签: python django floating-point


    【解决方案1】:

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

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

    或者,稍微短一点:

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

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

    【讨论】:

    • 也许我解释得不太好。但我想获得所有位于最高和最低频率范围内的值。我认为您的过滤仅显示两个最高和最低的。
    • 不,这个过滤器应该显示 all 对象,在两个范围端点之间有一个 'field' 值;这就是 '__gte'、'__lte' 和 '__range' 运算符所做的。
    猜你喜欢
    • 1970-01-01
    • 2022-11-12
    • 2014-01-25
    • 1970-01-01
    • 2014-12-17
    • 1970-01-01
    • 1970-01-01
    • 2015-06-09
    • 2021-05-20
    相关资源
    最近更新 更多