是否可以在Django
的{{1}}上执行聚合功能?
假设我们有3个对象,分别为RangeField
BigIntegerField
。
第一个obj:price_range
第二个obj:price_range = [10,5000]
第3个目标:price_range = [1,5000]
这三个对象的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 ...
答案 0 :(得分:2)
您可以使用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]
。