Django / Postgres:在RangeField上聚合

问题描述 投票:2回答:1

是否有可能在DjangoRangeField上执行聚合功能?

假设我们有BigIntegerField price_range的3个对象。

第一个obj:price_range = [10,5000]

第二个obj:price_range = [1,5000]

查看Bg:Qsqxob

这三个对象的price_range = [100,9000]Max聚合的结果将是:

Minmin = 1

我试图用这种方式聚合max = 9000Max

Min

这会引发错误:

ProgrammingError:函数min(int8range)不存在LINE 1:SELECT MIN(“app_mymodel”。“price_range”)AS“price_range _min”FROM“app ...

sql django postgresql aggregate-functions django-orm
1个回答
2
投票

您可以使用MyModel.objects.aggregate(Min('price_range'),Max('price_range'),) 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]

© www.soinside.com 2019 - 2024. All rights reserved.