为了账号安全,请及时绑定邮箱和手机立即绑定

Django,如何根据值获取两个字段值的总和

Django,如何根据值获取两个字段值的总和

白衣非少年 2021-08-17 18:47:46
模型.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 中,我有两个查询集,如下所示,现在如果我想将查询组合在一起,并且如果用户输入的 field_1 值和 field_2 值相同,则应该对其进行汇总。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) 它结合了查询集但不给出总和值。任何帮助将不胜感激。谢谢你。
查看完整描述

1 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

我认为这应该对你有用。您可能需要更改它以满足您的需要,但它显示了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(),

        )

    )

)


查看完整回答
反对 回复 2021-08-17
  • 1 回答
  • 0 关注
  • 255 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信