Python 如何在不同的查询中计算两个聚合字段:';dict';对象没有属性';变量名';德扬戈
我需要在两个不同查询中的两个聚合字段之间进行减法:Python 如何在不同的查询中计算两个聚合字段:';dict';对象没有属性';变量名';德扬戈,python,django,Python,Django,我需要在两个不同查询中的两个聚合字段之间进行减法: class ModelA(models.Model): price = models.IntegerField() #others class ModelB(models.Model): cost = models.IntegerField() #others paid_price = ModelA.objects.filter(status=True).annotate( total_paid = S
class ModelA(models.Model):
price = models.IntegerField()
#others
class ModelB(models.Model):
cost = models.IntegerField()
#others
paid_price = ModelA.objects.filter(status=True).annotate(
total_paid = Sum(F('price')),
#some more fields
).aggregate(
paid = Sum(F('total_paid'))
#some more fields
)
paid_costs = ModelB.objects.filter(status=True).annotate(
total_cost = Sum(F('cost')),
#some more fields
).aggregate(
t_cost= Sum(F('total_paid')),
#some more fields
)
我需要用paid
计算t_成本
我尝试了这个final_result=paid_price.paid-paid_成本。t_成本
但提出了这个错误:
“dict”对象没有“paid”属性
有没有办法做到这一点?
注意:模型之间没有连接聚合结果是字典,您需要通过键获取计算值
final_result = paid_price['paid'] - paid_costs['t_cost']
注意:除非您有一些分组(我在查询中看不到),否则作为模型一部分的字段上的注释不会起任何作用
如果只想重命名查询中的字段,请删除Sum
ModelA.objects.annotate(
total_paid=F('price')
)
方法总是产生一个dict结果
返回通过QuerySet
计算的聚合值(平均值、总和等)字典
那么这个表达应该是,
final_result = paid_price['paid'] - paid_costs['t_cost']
final_result=已付价格['paid']-已付成本['t_cost']