🦧

初めてのdjangoアプリ作成 pollアプリケーションでのChoiceがないQuestionを表示させない方法

2021/02/28に公開

該当箇所

さらなるテストについて考える
Choiceを持たないQuestionを除外する方法について書きます。

コード

polls/view.py

# Create your views here.
class IndexView(generic.ListView):
    template_name = 'polls/index.html'

    context_object_name = 'latest_question_list'
   
    def get_queryset(self):
        return Question.objects.filter(
            pub_date__lte=timezone.now()
        ).exclude(choice=None).order_by('-pub_date')[:5]


class DetailView(generic.DetailView):
    template_name = 'polls/detail.html'

    def get_queryset(self):
        return Question.objects.filter(pub_date__lte=timezone.now()).exclude(choice=None)

exclude(choice=None)で子テーブル(choice)を持たないものを除外出来ます。
これにより、
・choiceを持たないQuestion一覧が表示されない
・choiceを持たないQuestionの詳細ページが表示されない
ようになります。

注意

テストを書く際はquestionを持たないとページが表示されないのでチュートリアルのテストを改変する必要があります。

Discussion