回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>当我查询我的数据库时,我用三个不同的计数得到三次相同的条目。在结果列表中,我只想得到一个显示这些计数总和的条目</p>
<p>我想显示的是特定时期的总数</p>
<p>在我的查询中,我输入日期(从-到),度量类型,数据类型和出版年份</p>
<p>例如,我在网站上,当我进入</p>
<pre><code>from 201903 until 201905
</code></pre>
<p>我检索了在这段时间内被访问的三个标题以及它们被访问的次数</p>
<pre><code>Title, Publisher, DOI, data_type,YOP,[some other stuff] Counts
Title A publisherA 1234 Article, 2006, [some_other_stuff], 3
Title A publisherA 1234 Article, 2006, [some_other_stuff], 5
Title A publisherA 1234 Article, 2006, [some_other_stuff], 3
</code></pre>
<p>我需要的是</p>
<pre><code>Title, publisher, DOI, data_type, YOP, [some_other_stuff], Total period
Title A, publisherA 1234 Article, 2006, [some_other_stuff], 11
</code></pre>
<p>在views.py中,我有以下代码:</p>
<pre><code> q_report = Q()
var0 = self.request.GET.get("period1", "")
var1 = self.request.GET.get("period2", "")
var2 = self.request.GET.get("metric_type", "")
var3 = self.request.GET.get("data_type", "")
var4 = self.request.GET.get("YOP", "")
if var0:
q_report = q_report & (Q(month__gte=var0) & Q(month__lte=var1) )
#q_report_count = q_report_count & (Count(month__gte=var0) & Count(month__lte=var1) )
if var2:
q_report = q_report & (Q(metric_type=var2))
#q_report_count = q_report_count & (Q(metric_type=var2))
if var3:
q_report = q_report & (Q(data_type=var3))
if var4:
q_report = q_report & (Q(YOP=var4))
</code></pre>
<p>如果我使用</p>
<pre><code>qs = self.model.objects.filter(q_report).select_related()
</code></pre>
<p>我要拿回三个条目</p>
<p>结果是</p>
<pre><code><QuerySet [<Model: Title A>, <Model: Title A>, <Model: Title A>]>
</code></pre>
<p>我可以很容易地用</p>
<pre><code>total = self.model.objects.aggregate(total=Sum('counts', filter=q_report))
</code></pre>
<p>结果是</p>
<pre><code>{total : 11.0}
</code></pre>
<p>但理想情况下,我需要得到其他值以及</p>
<p>现在,我看不出我怎样才能把这两者结合起来,比如</p>
<pre><code>
<QuerySet [<Model: {'title':Title A, 'total':11}>, Model: {'title':Title B, 'total':7}>]
</code></pre>
<p>我甚至不知道这是可能的还是需要的。但我要把查询集和总数都还给你</p>
<p>有人能帮忙吗?谢谢</p>