我有以下观点:
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]
我想发布只有两个或更多选择的民意调查。 我尝试了很多变种,但它没有正常工作。
我如何巧妙地实现这一点?
答案 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]