Проверьте, сколько пользователей ответили, возвращая первое значение

Я пытаюсь увидеть, сколько пользователей ответили на каждый вариант, но он дает мне результат того, сколько людей ответили на первый вариант. Объект Result - это место, куда сохраняются все ответы.

Нужно ли мне сделать цикл в html? Это не будет работать, так как вы не можете вызвать Result в html и отфильтровать его? Как бы я мог это сделать. Я вижу, что счетчик остается на первом значении и продолжает цикл для каждого варианта, но я запутался, как это исправить.

HTML

Модель

class Result(models.Model):
    ResponseID = models.AutoField(primary_key=True, unique=True)
    userID = models.ForeignKey(Account, on_delete=models.CASCADE)
    QuestionsID = models.ForeignKey(Question, on_delete=models.CASCADE)
    ChosenOptionID = models.ForeignKey(Option, on_delete=models.CASCADE)

    def __str__(self):
        return str(self.ResponseID)

Виды для статистики

def question_statistics(request, id):
    question = Question.objects.get(QuestionsID = id)
    options = Option.objects.filter(QuestionsID = question)
    r = Result.objects.filter(QuestionsID = id)

    counter = 0
    for x in r:
        counter+=1
    a = Result.objects.filter(ChosenOptionID = options)

    counter2 = 0
    for y in options:
        a = Result.objects.filter(ChosenOptionID = y)
        for x in a:
            counter2+=1



    current_user = request.user
    if current_user.is_admin:
        pass

    
    else:
        messages.error("User is not admin")
        return redirect('dashboardPage')
    context = {'question' : question,
            'options' : options,
            'results' : r, 
            'counter' : counter,
            'counter2' : counter}
    return render(request, 'questionStatistic.html', context)

Ваш 'counter2': counter должен быть 'counter2': counter2. Он возвращает ответ на первый вопрос, потому что переменная, которую вы вызываете, является счетчиком для первого вопроса.

Вернуться на верх