django - Django 使用转换变量进行注释
问题描述
我想用 django 查询集来实现一些复杂的东西。我的模型如下所示:
class Mymodel(models.Model):
#Model Variables
year = models.IntegerField()
month = models.IntegerField()
date = models.DateField(_("Date"), default=datetime.date.today)
score = models.CharField(max_length=50)
很遗憾,
score' 不能从 CharField() 更改为 FloatField()
,它应该被保存为一个字符串。
我需要的是按年份和月份汇总所有分数。我尝试了这样的方法来对所有分数进行分组,但没有取得很大成功。
values = Mymodel.objects.all().values(
'year', 'month').annotate(Sum('score')).order_by('year', 'month')
在使用注释之前,我尝试通过这样做来投射“分数”。
values = Mymodel.objects.all().annotate(
scoreFloat=Cast('score', FloatField())
).values('year', 'month').annotate(
Sum('scoreFloat')).order_by('year', 'month')
再一次没有成功,因为我得到了 scoreFloat 参数的 KeyError 。
有什么建议么?
解决方案
在您的第二个查询中,您应该从第一个注释中添加新字段的值:
Mymodel.objects.annotate(as_float=Cast('score', FloatField())
).values('year', 'month', 'as_float'
).order_by('year', 'month'
).annotate(sumscore=Sum('as_float')).values('year', 'month', 'sumscore')
推荐阅读
- c# - 没有在 PostBack 上调用 Repeater ItemCreated
- xcode - 启动错误 | 使用 posix_spawn 启动时出现问题(错误代码:2)
- python - AttributeError:“系列”对象没有属性“update_datalim”
- c# - 用于依赖注入的 ASP.NET Core 多重实现
- git - 尝试部署站点 - 部署失败错误
- javascript - 我应该导出单例类以在 React 中使用吗?
- c# - 一旦客户端连接到服务器,如何让服务器打印通知?
- python - 实时多尺度模板匹配
- dart - 拖放列表-在 null 上调用了方法“调用”
- c# - 实体框架用户更新