gpt4 book ai didi

python - Django 在将每一行乘以不同的值后计算列的总和

转载 作者:行者123 更新时间:2023-12-04 13:06:32 36 4
gpt4 key购买 nike

我定义了三个 Django 模型:

class User(models.Model):
name=models.CharField
income=models.DecimalField
expenditure=models.DecimalField
group=models.DecimalField
country = models.ForeignKey(Country)

class Country(models.Model):
name=models.CharField
currency = models.ForeignKey(Currency)

class Currency(models.Model):
name=models.CharField
value=models.DecimalField

用户可以来自不同的国家。每个国家都有一种货币,其值(value)是与美元的汇率。

我试图在将每个值乘以相应的货币汇率后计算所有列的总和。例如,对于 3 个用户:

John:2:10:1:2
Jame:10:11:1:1
Mark:5:11:1:1

Country
1:USA:1
2:UK:2

Currency:
1:USD:1
2:GBP:1.5

我想在计算后打印总和

income: (2*1.5) + (10*1) + (5*1) 
expenditure: (10*1.5) + (11*1) + (11*1)

最终输出:

income: 18
expenditure: 37

我在想这样的事情可能会奏效,但我不太明白:

user=User.objects.filter(group=1).aggregate((Sum('income')*(country_currency_value),(Sum('expenditure')*(country_currency_value))

非常感谢任何帮助

最佳答案

你应该使用 F() expressions将字段相乘,然后在字段名称中使用 __ 运算符来引用外键。

User.objects
.filter(group=1)
.aggregate(
total_income=Sum(F('income') * F('country__currency__value')),
total_expenditure=Sum(F('expenditure') * F('country__currency__value')),
)

将返回:

{'total_income': Decimal('18'), 'total_expenditure': Decimal('37')}

关于python - Django 在将每一行乘以不同的值后计算列的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69208993/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com