django - 如何从表中获取差异值 - django?

标签 django

我是 Django 新手,遇到了一个问题。我有一张像

的 table
TABLE
Id      Title     Type   Value
1       A         1      10
2       A         1      20
3       A         2      5
4       A         2      8 
5       B         1      1000 

型号

class Company(models.Model):
    company             = models.ForeignKey(Company, on_delete=models.CASCADE)
    value               = models.IntegerField() 
    type                = models.SmallIntegerField(default='1')
    date                = models.DateTimeField(default=timezone.now)
    user                = models.ForeignKey(User, on_delete=models.CASCADE)

现在,从上表中,如何获得一个值,将相似类型的值相加,并从不同类型中减去该值((A+A)-(A+A)) = 17) 。另外,我只有两种类型的值。

如何编写查询来获取结果。

最佳答案

您可以通过以下方式聚合模型:

from django.db.models import Q, Sum, Value
from django.db.models.functions import Coalesce

Company.objects.aggregate(
    <b>total=</b>(Coalesce(Sum('value'<b>, filter=Q(type=1)</b>), Value(0)) -
              Coalesce(Sum('value'<b>, filter=Q(type=2)</b>), Value(0)))
)['total']

关于django - 如何从表中获取差异值 - django?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67807961/

相关文章:

django - Docker-compose 添加 Postgres 密码

python - related_name 是做什么用的?

python - Django:在数据库中不存在的两个日期范围之间进行分组

Django - 在长时间处理期间显示加载消息

django - 如果 django rest 中提供了未经授权的凭据,如何发送自定义响应

python - Django 1.9 中的 query.group by

html - CSS 类已更改,但样式需要时间才能应用

django - django 单元测试中缺少固定装置没有错误

python - Django 按查询集分组并与另一个字段相乘

django - 如何扩展django管理员 View ?