代码之家  ›  专栏  ›  技术社区  ›  Milano

Django/Postgres:RangeField上的聚合

  •  2
  • Milano  · 技术社区  · 6 年前

    是否可以在 Django RangeField 是吗?

    假设我们有3个物体 BigIntegerField price_range .

    第一个对象: price_range = [10,5000]

    第二个对象: price_range = [1,5000]

    第三个对象: price_range = [100,9000]

    结果 Max Min 这三个对象的聚合将是:

    min = 1 max = 9000

    我正在努力总结 马克斯 分钟 这种方式:

    MyModel.objects.aggregate(Min('price_range'),Max('price_range'),)
    

    这会引起错误:

    编程错误:函数min(int8range)不存在第1行: 从“应用程序…”中选择“最小值”(“应用程序mymodel”.“价格范围”)作为“价格范围最小值”。

    1 回复  |  直到 6 年前
        1
  •  2
  •   willeM_ Van Onsem    6 年前

    Upper(..) Lower(..)

    from django.db.models.functions import Upper, Lower
    
    MyModel.objects.aggregate(Min(Lower('price_range')), Max(Upper('price_range')))

    [0, 20] [50, 100] [0, 100]