django - 从 Django 函数返回标量
问题描述
我有一个愚蠢的问题
我真的希望下面返回一个数字,但它仍然返回一个可迭代的对象。你知道我怎样才能让它返回一个标量吗?
pts = skills.objects.filter(creator=request.user).raw('''SELECT sum(cast(points as int)) as id FROM myapp_skills WHERE status = 'closed' and creator = %s ''',[request.user.username])
这是我的技能模型:
class skills(models.Model):
skill_name = models.CharField(max_length=400, default="data")
points = models.CharField(max_length=400, default="data")
time_required = models.CharField(max_length=400, default="data")
target_date = models.CharField(max_length=400, default='none')
category = models.CharField(max_length=400, default="data")
status = models.CharField(max_length=400, default="data")
skill_id = models.CharField(max_length=400, default="data")
creator = models.CharField(max_length=400, default="data")
syllabus = models.CharField(max_length=40000, default="data")
解决方案
您可以进行如下所示的 ORM 查询:
from django.db.models import IntegerField, Sum
from django.db.models.functions import Cast
pts = skills.objects.filter(
creator=request.user, status='closed'
).aggregate(
total=Sum(Cast('points', output_field=IntegerField()))
)['total']
推荐阅读
- javascript - 节点模块不会导入到我的 Vue.js 项目中
- javascript - 使用带有真值 if 语句的 etcd 事务
- r - 在 R 中创建一个循环以根据存储在其中的变量的名称来命名(保存)文件
- graphviz - Graphviz:给定一棵树渲染节点,从同一层的根节点开始的最大路径长度?
- javascript - 在发送到数据库之前操作 json
- javascript - 如何等待所有可观察对象完成并将结果存储在对象中
- azureservicebus - Azure 服务总线 - 将消息从死信队列自动转发到另一个队列
- android - 登录谷歌账户时显示用户界面
- directx-9 - 如何修复 DirectX9 SDK 中的错误 0xc000007b
- javascript - npm @material-ui/core 按钮和 TexField 不起作用