Django generic.ListView: не отображать вопросы, для которых не указаны варианты ответов
Моделями являются:
class Question(models.Model):
question_text = models.CharField(max_length=200)
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
У некоторых вопросов нет вариантов, указанных администратором. Я не хочу отображать такие вопросы.
Если решение заключается в переопределении get_queryset, то как это сделать? Или лучше получить все вопросы (Question.objects.all()
) и отфильтровать их в представлении?
class QuestionList(generic.ListView):
model = Question
template_name = 'polls/index.html'
context_object_name = 'latest_question_list'
def get_queryset(self):
# How?
Вы можете либо установить атрибут queryset
на View
class QuestionList(generic.ListView):
model = Question
queryset = Question.objects.filter(choice__isnull=False).distinct()
Или переопределить get_queryset
class QuestionList(generic.ListView):
model = Question
def get_queryset(self):
return super().get_queryset().filter(choice__isnull=False).distinct()