我是 Django 新手,遇到了一个问题。我有一张像
的 tableTABLE
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/