Проверьте, сколько пользователей ответили, возвращая первое значение
Я пытаюсь увидеть, сколько пользователей ответили на каждый вариант, но он дает мне результат того, сколько людей ответили на первый вариант. Объект 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. Он возвращает ответ на первый вопрос, потому что переменная, которую вы вызываете, является счетчиком для первого вопроса.