1

私は次の見解を持っています:

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]

また、選択肢が 2 つ以上ある投票のみを公開したいと考えています。多くのバリエーションを試しましたが、正しく動作しませんでした。

どうすればこれを巧みに実装できますか?

4

1 に答える 1

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] 
于 2013-09-20T11:18:23.717 に答える