Возвращение скаляра из функции Django
У меня глупый вопрос
Я очень хочу, чтобы нижеприведенная функция возвращала одно число, но она все равно возвращает объект iterable. Не знаете ли вы, как я могу заставить его возвращать скаляр?
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']