我有以下查询集,并且我想使用django注释进行多次和,但我有一些错误,请问您对此有何建议?,将不胜感激。我已经尝试过了,但是我想要的不一样
queryset = (
BuildingCell.objects
.filter(
absent__publish='2019-07-22',
absent__building_name='f2',
absent__bagian='CUT',
inputcutsew__publish='2019-07-22',
inputcutsew__days='normal',
inputcutsew__user=factory_user_cutting
)
.exclude(inputcutsew__cell_name__isnull=True)
.exclude(inputcutsew__cell_name__exact='')
.order_by('inputcutsew__cell')
.values(
'inputcutsew__cell',
'inputcutsew__model',
'absent__normal_mp',
'absent__ot0_mp',
'absent__ot1_mp',
'absent__ot2_mp',
'absent__ot3_mp'
)
.exclude(occult_cell='yes')
.annotate(
total_output_jam=Coalesce(Sum(Case(When(inputcutsew__dummy_days='normal', then='inputcutsew__output'))), 0),
total_output_ot=Coalesce(Sum(Case(When(inputcutsew__dummy_days='overtime', then='inputcutsew__output'))), 0),
total_time=Coalesce(Sum('inputcutsew__time'), 0),
total_time_ot=Coalesce(Sum('inputcutsew__time_ot'), 0),
total_time_ot1=Coalesce(Sum('inputcutsew__time_ot1'), 0),
total_time_ot2=Coalesce(Sum('inputcutsew__time_ot2'), 0),
total_time_ot3=Coalesce(Sum('inputcutsew__time_ot3'), 0)
)
.annotate(
normal_wmh=Coalesce(F('absent__normal_mp'), 0) * Coalesce(F('total_time'), 0),
normal_swmh=Coalesce(F('absent__normal_mp'), 0) * Coalesce(F('total_time'), 0),
overtime_wmh=(
(Coalesce(F('absent__ot0_mp'), 0) * Coalesce(F('total_time_ot'), 0))
+ (Coalesce(F('absent__ot1_mp'), 0) * Coalesce(F('total_time_ot1'), 0))
+ (Coalesce(F('absent__ot2_mp'), 0) * Coalesce(F('total_time_ot2'), 0))
+ (Coalesce(F('absent__ot3_mp'), 0) * Coalesce(F('total_time_ot3'), 0))
),
overtime_swmh=(
(1.5*Coalesce(F('absent__ot0_mp'), 0) * Coalesce(F('total_time_ot'), 0))
+ (2 * Coalesce(F('absent__ot1_mp'), 0) * Coalesce(F('total_time_ot1'), 0))
+ (2 * Coalesce(F('absent__ot2_mp'), 0) * Coalesce(F('total_time_ot2'), 0))
+ (2 * Coalesce(F('absent__ot3_mp'), 0) * Coalesce(F('total_time_ot3'), 0))
)
)
.annotate(
sum_total_output_jam=Sum(F('total_output_jam')),
sum_total_output_ot=Sum(F('total_output_ot')),
sum_normal_wmh=Sum(F('normal_wmh')),
sum_normal_swmh=Sum(F('normal_swmh')),
sum_overtime_wmh=Sum(F('overtime_wmh')),
sum_overtime_swmh=Sum(F('overtime_swmh'))
)
)
/ superuser / inputtime / 2/3 / f2 / CUT / 2019-07-22的FieldError无法 计算总和('total_output_jam'):'total_output_jam'是一个聚合