Неподдерживаемый тип(ы) операнда(ов) для *: 'QuerySet' и 'IntegerField'

Я пытаюсь умножить результат из подзапроса на 1000, но вместо этого получаю ошибку "unsupported operand type(s) for *: 'QuerySet' и 'IntegerField'"

вот мой код :

 last_lrpa = LRPA_File.objects.order_by('-file_export_date').first()
 last_mou = FileMouPengalihan.objects.order_by('file_export_date').first()

 sq_1 = MacroData.objects.filter(macro_file=skai_1.macro.macro_file_1, prk=OuterRef('prk'))
 sq_2 = MacroData.objects.filter(macro_file=skai_2.macro.macro_file_1, prk=OuterRef('prk'))
 sq_3 = MacroData.objects.filter(macro_file=skai_3.macro.macro_file_1, prk=OuterRef('prk'))
 sq_mou = MouPengalihanData.objects.filter(file=last_mou, prk=OuterRef('prk'))
        
 lrpa = LRPA_Monitoring.objects.select_related('prk').filter(file=last_lrpa). \
        annotate(ai_1 = Round(sq_1.values('ai_this_year')*1000), aki_1 = sq_1.values('aki_this_year'), status_1 = sq_1.values('ang_status'),
               ai_2 = Round(sq_2.values('ai_this_year')*1000), aki_2 = sq_2.values('aki_this_year'), status_2 = sq_2.values('ang_status'),
               ai_3 = Round(sq_3.values('ai_this_year')*1000), aki_3 = sq_3.values('aki_this_year'), status_3 = sq_3.values('ang_status'),
               mou_jan = sq_mou.values('jan'),mou_feb = sq_mou.values('feb'),mou_mar = sq_mou.values('mar'),mou_apr = sq_mou.values('apr'),
               mou_mei = sq_mou.values('mei'),mou_jun = sq_mou.values('jun'),mou_jul = sq_mou.values('jul'),mou_aug = sq_mou.values('aug'),
               mou_sep = sq_mou.values('sep'),mou_okt = sq_mou.values('okt'),mou_nov = sq_mou.values('nov'),mou_des = sq_mou.values('des'),
               sd_1 = sq_1.values('sumber_dana'), sd_2 = sq_2.values('sumber_dana'), sd_3 = sq_3.values('sumber_dana'),
               )
        
context["lrpa"] = lrpa

sq_1, 2 и 3 используют filter() для создания наборов записей, поэтому даже если в них есть только одна запись, считается, что это набор.

Если вы хотите использовать только первое значение, вам понадобится что-то вроде

 ai_2 = Round(sq_2[0]['ai_this_year']*1000)...

или взять его раньше и более надежно (так как первый вернет None, если набор записей пуст)

sq_2_1 = sq2.first()
if sq_2_1
   ai_2 = Round(sq_2_1['ai_this_year']*1000)...
Вернуться на верх