我想将在每个用户的页面请求中计算的一些统计数据添加到查询集中,以显示在一个大表中。annotate 方法可能是最好的选择,但我坚持将创建的查询集合并到一个,以便在模板中进行操作。查询集类型优先用于对数据进行排序。
以下是我的应用程序的极其简化的原理。模板和模型一定不能动,因为这显然是我想要的结果。本示例未实现按列排序的数据。
以下是模型:
class Poll(models.Model):
question = models.CharField(max_length=200, unique=True)
class Vote(models.Model):
poll = models.ForeignKey(Poll)
accept = models.BooleanField()
comment = models.CharField(max_length=200, unique=True)
censored = models.BooleanField()
这是视图:
def summaryView(request):
…
contexte['poll_list'] = «insert code here»
…
return render_to_response('summary.html, contexte)
这是模板:
<table>
<thead>
<tr>
<th>
Poll question
</th>
<th>
Number of votes
</th>
<th>
Number of uncensored "yes" votes
</th>
<th>
Number of censored votes
</th>
</th>
</thead>
<tbody>
{% for poll in poll_list %}
<tr>
<td>
{{ poll.question }}
</td>
<td>
{{ poll.numUncensoredYesVotes }}
</td>
<td>
{{ poll.numCensoredVotes }}
</td>
</tr>
{% endfor %}
</tbody>
</table>
困难在于创建未经审查的“是”票数注释。Count() 聚合函数不接受过滤器。