我需要使用Django的Sum和Func utils通过queryset创建一个组
但是当将所有函数放在注释中时,我会遇到此错误
提高FieldError(“无法计算%s('%s'):'%s'是一个聚合值”%(c.name,name,name) django.core.exceptions.FieldError:无法计算Sum(''):”是聚合
我需要为DRF序列化器获得类似的东西
[
{
'quantity': '1520',
'employee__profile__empcod': 762,
'operation__baseqty': Decimal('480.0000000000'),
'duration': 14678.0,
'standar': '30,57'
}, {
'quantity': '150',
'employee__profile__empcod': 589,
'operation__baseqty': Decimal('600.0000000000'),
'duration': 94070.0,
'standar': '95,68'
}, {
'quantity': '150',
'employee__profile__empcod': 758,
'operation__baseqty': Decimal('720.0000000000'),
'duration': 5060.0,
'standar': '150,68'
}
],
这是获取所有任务的查询集
tasks = TaskOperation.objects.filter(startdt__gte=start, startdt__lte=end, enddt__isnull=False, operation__baseqty__gt=0).order_by('employee_id')
tasks = tasks.values('employee__profile__empcod', 'employee__profile__firstname')
tasks = tasks.annotate(
duration=Sum(Cast(Func('startdt', 'enddt', function='datediff', template='%(function)s(ss,%(expressions)s)'), FloatField())),
standar= Sum(Case(
When(duration__lte=0, then=0),
default=Sum((F('quantity') * 100) / (F('duration') / F('operation__baseqty'))),
output_field=FloatField()
))
)