两种方式:
①直接添加default值:
aggregate(SUM('field_name', default=0))
②使用Coalesec函数:
aggregate(Coalesce(Sum("field_name"), 0))
示例:
@classmethod
def total(cls):
total= cls.objects.filter(status=1).aggregate(total=Sum('size'))[
'total']
return total
当cls.objects.filter(status=1)查询返回的是空查询集,执行aggregate(total=Sum('size'))[
'total']聚合操作后,返回的是个None值
优化后:
# 方式1:
@classmethod
def total(cls):
total= cls.objects.filter(status=1).aggregate(total=Sum('size', default=0))[
'total']
return total
# 方式2:
@classmethod
def total(cls):
total= cls.objects.filter(status=1).aggregate(total=Coalesce(Sum('size'), 0)[
'total']
return total
这么改后,即使cls.objects.filter(status=1)查询返回的是空查询集,执行聚合操作后,最终的返回值会是0。