按相关选项的数量过滤。 Django的

时间:2013-09-20 11:08:26

标签: django

我有以下观点:

class IndexView(generic.ListView):
    template_name = "polls/index.html"
    context_object_name = "latest_poll_list"

    def get_queryset(self):
        """
        Return the last five active published polls with at least
        two choices.
        """
        return Poll.objects.filter(pub_date__lte=timezone.now(),
                                   is_active__exact=True,
                                  ).order_by('-pub_date')[:5]

我想发布只有两个或更多选择的民意调查。 我尝试了很多变种,但它没有正常工作。

我如何巧妙地实现这一点?

1 个答案:

答案 0 :(得分:1)

使用annotate()

from django.db.models import Count

Poll.objects.filter(pub_date__lte=timezone.now(), is_active__exact=True) \
            .annotate(num_choices=Count('choice')) \
            .filter(num_choices__gte=2) \
            .order_by('-pub_date')[:5]