Hello, I am posting because I am working on the Django documentation tutorials and am currently on the testing portion (https://docs.djangoproject.com/en/2.2/intro/tutorial05/).
In this tutorial where we are building the polls application, there is a portion where we wish to restrict what pages will render a 404 error based on certain conditions, such as whether the the pole has a past or future publication date. This is done using the get_queryset() function. They do this for both the index page and the detail page. I assume most people answering this question would be familiar and have worked through this tutorial. What I am trying to do is prevent polls showing up on the index page or having a detail page based on how many choice options they have (obviously, there is no point of showing a poll with 0 or 1 options). Currently my code looks like this in polls/view.py ################################################# from django.http import HttpResponseRedirect from django.shortcuts import get_object_or_404, render from django.urls import reverse from django.views import generic # for the generic views from django.utils import timezone from .models import Choice, Question class IndexView(generic.ListView): template_name = 'polls/index.html' context_object_name = 'latest_question_list' #def get_queryset(self): # return Question.objects.order_by('-pub_date')[:5] def get_queryset(self): queryset = Question.objects.filter(pub_date__lte=timezone.now()).order_by('-pub_date')[:5] queryset = [question for question in queryset if question.choice_set.count() >=2] return queryset class DetailView(generic.DetailView): model = Question template_name = 'polls/detail.html' def get_queryset(self): """ Excludes any questions that aren't published yet or have zero choices. """ queryset = Question.objects.filter(pub_date__lte=timezone.now(), ) #queryset = [question for question in queryset if question.choice_set.count() >=2] return queryset ################################################## The issue is this code works perfectly fine for the index page, but when I uncomment the line in the get_queryset() function in the DetailView, I obtain this error for any question. ################################################### Environment: Request Method: GET Request URL: http://127.0.0.1:8000/polls/1/ Django Version: 2.2.3 Python Version: 3.6.3 Installed Applications: ['polls.apps.PollsConfig', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles'] Installed Middleware: ['django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware'] Traceback: File "/home/temporary/Desktop/Django/projects/tut_proj_1/lib/python3.6/site-packages/django/core/handlers/exception.py" in inner 34. response = get_response(request) File "/home/temporary/Desktop/Django/projects/tut_proj_1/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response 115. response = self.process_exception_by_middleware(e, request) File "/home/temporary/Desktop/Django/projects/tut_proj_1/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response 113. response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/home/temporary/Desktop/Django/projects/tut_proj_1/lib/python3.6/site-packages/django/views/generic/base.py" in view 71. return self.dispatch(request, *args, **kwargs) File "/home/temporary/Desktop/Django/projects/tut_proj_1/lib/python3.6/site-packages/django/views/generic/base.py" in dispatch 97. return handler(request, *args, **kwargs) File "/home/temporary/Desktop/Django/projects/tut_proj_1/lib/python3.6/site-packages/django/views/generic/detail.py" in get 106. self.object = self.get_object() File "/home/temporary/Desktop/Django/projects/tut_proj_1/lib/python3.6/site-packages/django/views/generic/detail.py" in get_object 36. queryset = queryset.filter(pk=pk) Exception Type: AttributeError at /polls/1/ Exception Value: 'list' object has no attribute 'filter' ####################################################### I am still new to this and I assume it may be due to the difference between the generic Listview and the generic DetailView, or some issue with how the content of the html templates polls/detail.html or polls/index.html is rendered but I have no previous experience with html and only understand Python in principle without working on any previous big projects like this. Any help would be appreciated. James -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscr...@googlegroups.com. To post to this group, send email to django-users@googlegroups.com. Visit this group at https://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/a9d794d0-e8d4-43ac-bf2f-5aa7f4078098%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.