0

Entry我有一个to的外键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)

如何对其进行排序以使其仅计算在某个日期之前创建的选票?我是查询数据库并遍历所有内容的唯一选择吗?

4

1 回答 1

1

如果您只是添加过滤器,它应该在聚合中包含该过滤器。您将使用外键的related_name 来过滤连接的那部分。

entries = Entry.objects.annotate(
    num_votes = Count('votes')).order_by('-num_votes')

entries = entries.filter(votes__created__lte=some_date)
于 2012-05-23T00:32:27.407 回答