我有一个从Entry
到Vote
的外键,我希望对某个日期之前创建的Vote
进行排序。我怎样才能以漂亮的方式做到这一点?通常我会这样做:
entries = Entry.objects.annotate(
num_votes = Count('votes')).order_by('-num_votes')
page = request.GET.get('page')
paginator = Paginator(entries, 12)
try:
entries = paginator.page(page)
except PageNotAnInteger:
entries = paginator.page(1)
except EmptyPage:
entries = paginator.page(paginator.num_pages)
如何对它进行排序,以便只计算在特定日期之前创建的投票?是我查询数据库并迭代所有内容的唯一选择吗?
答案 0 :(得分:1)
如果您只是添加过滤器,它应该在聚合中包含该过滤器。您可以使用外键的related_name来过滤该部分的连接。
entries = Entry.objects.annotate(
num_votes = Count('votes')).order_by('-num_votes')
entries = entries.filter(votes__created__lte=some_date)