python - 使用注释获取百分比给我结果而不用逗号 7/2 = 3 而不是 3.5
问题描述
我想得到百分比值:
nomberesteda * 100 / nomberhodor = 0.00
我使用这个查询集:
listilam = MediaSecParnt.objects.filter(date__range=[primary1, primary2]).values(
'withsecondray__name','withdegrey__name','withsecondray_id','withdegrey_id')
.annotate(nomberhodor=Sum('nomberhodor'), nomberesteda=Sum('nomberesteda'), percent=((((F('nomberhodor')*100)/(F('nomberesteda'))))))
这里 :
percent=((((F('nomberhodor')*100)/(F('nomberesteda'))))))
返回不带逗号的百分比值!
nomberhodor
列是整数,对于 noberesteda 是相同的
结果如下:
<QuerySet [{'nomberhodor': 70, 'nomberesteda': 300, 'percent': 23},
{'nomberhodor': 64, 'nomberesteda': 150, 'percent': 42},
{'nomberhodor': 33, 'nomberesteda': 66, 'percent': 50},
{'nomberhodor': 50, 'nomberesteda': 200, 'percent': 25},
{'nomberhodor': 220, 'nomberesteda': 725, 'percent': 30},
{'nomberhodor': 567, 'nomberesteda': 900, 'percent': 63},
{'nomberhodor': 309, 'nomberesteda': 910, 'percent': 33}]>
它应该是 :
<QuerySet [{'nomberhodor': 70, 'nomberesteda': 300, 'percent': 23.33},
{'nomberhodor': 64, 'nomberesteda': 150, 'percent': 42.66},
{'nomberhodor': 33, 'nomberesteda': 66, 'percent': 50.00},
{'nomberhodor': 50, 'nomberesteda': 200, 'percent': 25.00},
{'nomberhodor': 220, 'nomberesteda': 725, 'percent': 30.34},
{'nomberhodor': 567, 'nomberesteda': 900, 'percent': 63.00},
{'nomberhodor': 309, 'nomberesteda': 910, 'percent': 33.95}]>
解决方案
您可以使用ExpressionWrapper
[Django-doc]指定输出格式:
from django.db.models import ExpressionWrapper, FloatField
.annotate(
nomberhodor=Sum('nomberhodor'),
nomberesteda=Sum('nomberesteda'),
percent=ExpresssionWrapper(
F('nomberhodor')*100/F('nomberesteda'),
output_field=FloatField()
)
)
对于某些数据库,这是由于类型推断。在这种情况下,您可以使用Cast
:
from django.db.models import FloatField
from django.db.models.functions import Cast
.annotate(
nomberhodor=Sum('nomberhodor'),
nomberesteda=Sum('nomberesteda'),
percent=Cast(F('nomberhodor'), output_field=FloatField()) *
100/F('nomberesteda')
)
)
推荐阅读
- python - 移动矩阵,使给定位置居中
- python - 转换为 python TimeField 对象
- python-3.x - 正则表达式:匹配 From 之前的所有内容:
- mongodb - 什么是 MongoDB 中的不相关子查询?
- regex - 如何计算单元格是否在Google表格中的单词末尾包含*
- javascript - AWS s3 存储桶上的 React-Router 位置不起作用
- r - 如何计算R中零之间的值?
- database - 将索引放在 postgres 中经常更新的列上
- python - 如何从python中的url正确获取数据帧?
- javascript - 使用 JSON 从给定的外部 json 对象中使用 async/await 方法填充选择下拉列表,并在 vanilla js 中尝试和捕获语句