Одним из возможных способов достижения этого является использование метода Queryset под названием values_list.
Он возвращает определенный запрос (значение ValuesListQuerySet), а затем вы можете сделать некоторые дополнительные вычисления на нем.
Вы можете сделать это:
vqs = CueCompletion.objects.filter( user_id=profile_user.pk, status_action_taken_on__gte=day_ago ).values_list('amount','opportunities')
и тогда вы будете иметь что-то вроде vqs = [(50, 2), (100, 4), (25, 2), ...]
, то есть «список» из п кортежей, каждый со значением суммы и возможности поле.
(на самом деле vqs
это не список, это ValuesListQuerySet, но не имеет значения для нашего следующего шага).
Наш следующий шаг (ака дальнейших вычислений) является:
total = sum(t[0] * t[1] for t in vqs)
, где мы используем встроенную его sum() функцию генератора, содержащий все наши (СУММА * возможности).
(почему использование генератора вместо списка понимания? Проверить this answer!)
Вы заслуживаете медаль за это решение. – MiniGunnR