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()
Вернуться на верх