模型.pyclass Iso(models.Model): service_type = models.CharField(max_length=100, blank=True, null=True) field_1 = models.IntegerField(blank=True, null=True) field_1_size = models.IntegerField(blank=True, null=True) field_2 = models.IntegerField(blank=True, null=True) field_2_size = models.IntegerField(blank=True, null=True)在我的 views.py 中,我有兩個查詢集,如下所示,現(xiàn)在如果我想將查詢組合在一起,并且如果用戶輸入的 field_1 值和 field_2 值相同,則應(yīng)該對其進行匯總。qs1 = Model.objects.values('service_type', 'field_1')\ .annotate(field_total=Sum('field_1_size'))qs2 = Model.objects.values('service_type', 'field_2')\ .annotate(field_total=Sum('field_2_size'))我試過,如果 field_1 和 field_2 相同, qs_tot = qs1.union(qs2) 它結(jié)合了查詢集但不給出總和值。任何幫助將不勝感激。謝謝你。
1 回答

慕慕森
TA貢獻1856條經(jīng)驗 獲得超17個贊
我認為這應(yīng)該對你有用。您可能需要更改它以滿足您的需要,但它顯示了Case在Sum注釋中使用的概念。
Model.objects.annotate(
same_total=Sum(
Case(
When(
field_1=F('field_2'),
then=F('field_1_size')+F('field_2_size'),
), output_field=IntegerField(),
)
)
)
添加回答
舉報
0/150
提交
取消