各ユーザーのページ要求で計算された統計データをクエリセットに追加して、大きなテーブルに表示したいと考えています。注釈メソッドが最良の選択かもしれませんが、テンプレートでの操作を容易にするために、作成されたクエリセットを単一のクエリセットにマージすることに固執しています。クエリセット タイプは、データの並べ替えに適しています。
以下は、私のアプリケーションの非常に単純化された原則です。テンプレートとモデルには触れないでください。それは明らかに私が望んでいる結果だからです。この例では、列によるデータの並べ替えは実装されていません。
モデルは次のとおりです。
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() 集計関数はフィルターを受け入れません。