python - 如何在Django中使用注释找到特定值和总值之间的比率并将其存储在每个实体中?
问题描述
我正在尝试计算每种产品的销售额与总销售额之间的比率。我想将该比率存储在每个模型实体中。我怎样才能做到这一点?
这是我的尝试。它不起作用。它抛出“不支持从 CombinedExpression 到 Decimal 的转换”。
count_products = Product.objects.count() # total value
products = Product.objects.annotate(num_sales=Count('cartitem')).all().annotate(support=Value(F('num_sales') / count_products, output_field=DecimalField()))
解决方案
您不必使用Value
除法,它仅用于常量。应该是.annotate(support=F('num_sales') / count_products)
。另外我建议添加output_field
到您的Count('cartitem')
, 所以数据库将进行十进制,而不是整数除法。注意output_field
必须是一个实例,而不是类本身。()
所以在后面加上DecimalField
,就足够了。
推荐阅读
- android - 任务 ':app:generateDebugBuildConfig' 执行失败。飘飘然
- angular - 输入 Angular [ngClass] - [(ngModel)] 时更改边框输入
- r - R,每列/样本删除零个条目并计算唯一出现。将它们绘制为堆积条形图
- azure-cognitive-search - "SearchAsync" InvalidCastException Null 对象无法转换为值类型
- mysql - 即使在模型中设置公共 $increments = false 之后,Laravel 8 也会自动增加列
- python - 如何解决 conda 的 pycosat 依赖?
- java - 摩托罗拉 MC9000 手持设备失去与服务器的连接(服务器或网络参数?)
- swift - 无法将“查询”类型的值转换为预期的条件类型“布尔”
- logging - log4j 记录器级别未按预期工作
- flutter - 如何在flutter项目中使用flutter.widgets的fork?