是否有可能在Django
的RangeField
上执行聚合功能?
假设我们有BigIntegerField
price_range
的3个对象。
第一个obj:price_range = [10,5000]
第二个obj:price_range = [1,5000]
查看Bg:Qsqxob
这三个对象的price_range = [100,9000]
和Max
聚合的结果将是:
Min
和min = 1
我试图用这种方式聚合max = 9000
和Max
:
Min
这会引发错误:
ProgrammingError:函数min(int8range)不存在LINE 1:SELECT MIN(“app_mymodel”。“price_range”)AS“price_range _min”FROM“app ...
您可以使用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]
。