擅长:python、mysql、java
<p>实现它的一种可能方法是使用名为<a href="https://docs.djangoproject.com/en/1.7/ref/models/querysets/#values-list" rel="nofollow noreferrer">values_list</a>的Queryset方法。在</p>
<p>它返回一个特定的queryset(ValuesListQuerySet),然后您可以对它进行进一步的计算。在</p>
<p>您可以这样做:</p>
<p><code>vqs = CueCompletion.objects.filter(
user_id=profile_user.pk, status_action_taken_on__gte=day_ago
).values_list('amount','opportunities')</code></p>
<p>然后您将得到类似<code>vqs = [(50, 2), (100, 4), (25, 2), ...]</code>,即<em>n</em>元组的“列表”,每个元组的值都是<em>amount</em>和<em>机会</em>字段。在</p>
<p>(实际上<code>vqs</code>它不是一个列表,它是一个ValuesListQuerySet,但对于我们的下一步操作没有关系)。在</p>
<hr/>
<p>我们的下一步(也就是进一步的计算)是:</p>
<p><code>total = sum(t[0] * t[1] for t in vqs)</code></p>
<p>在这里,我们在包含所有(<em>amount</em>*<em>机会</em>)结果的生成器上使用build it<a href="https://docs.python.org/2.7/library/functions.html#sum" rel="nofollow noreferrer">sum()</a>函数。在</p>
<p>(为什么要使用生成器而不是列表理解?检查<a href="https://stackoverflow.com/a/189840/4594377">this answer</a>!)在</p>