The view portion has this:
def question_check_anon(request, quiz):
"""
check if a question is correct, adds to score if needed and return the
previous questions details
"""
quiz_id = str(quiz.id)
guess = request.GET['guess']
answer = Answer.objects.get(id=guess)
question = answer.question # the id of the question
if answer.correct == True:
outcome = "correct"
score = quiz_id + "_score"
current = request.session[score]
current = int(current) + 1
request.session[score] = current # add 1 to the score
anon_session_score(request, 1, 1)
else:
outcome = "incorrect"
anon_session_score(request, 0, 1)
if quiz.answers_at_end != True: # display answer after each question
return {'previous_answer': answer, 'previous_outcome': outcome,
'previous_question': question, }
else: # display all answers at end
return {}
Related template :
<form action="/{{ quiz.url }}/take/" method="get">
<table class="table table-hover table-bordered" id="answerchoice">
<tbody>
{% for answer in answers %}
<tr>
<td>
<label>
<input type="radio" name="guess" value="{{ answer.id
}}" class="form-radio">
{{ answer.content }}
</label>
</td>
</tr>
{% endfor %}
</form>
</tbody>
</table>
<input type="submit" value="Check" class="btn btn-large btn-block
btn-warning" >
I guess I will change the template to
<label>
<input type="checkbox" name="guess" value="{{ answer.id }}"
class="form-radio"> True <input type="checkbox" name="guess" value="{{
answer.id }}" class="form-radio"> False ||
{{ answer.content }}
</label>
and view to:
if answer.correct == True:
outcome = "correct"
score = quiz_id + "_score"
current = request.session[score]
current = int(current) + 1
request.session[score] = current # add 1 to the score
anon_session_score(request, 1, 1)
elif answer.incorrect == True:
outcome = "correct"
score = quiz_id + "_score"
current = request.session[score]
current = int(current) + 1
request.session[score] = current
anon_session_score(request, 1, 1)
else:
outcome = "incorrect"
anon_session_score(request, 0, 1)
but the result is not what I expected.
On Monday, March 10, 2014 12:04:35 PM UTC+6, orchid barua wrote:
>
> I want to modify the django-quiz application.
> https://github.com/tomwalker/django_quiz
>
> The quesiton will be a multiple true false type. Each question will have 5
> stem, each will be tested for true/false. Each will carry partial marks eg.
> 1 will be awarded for a correct ans. And there will be a system for penalty
> eg. deduct 0.5 marks for a wrong answer of a stem.
>
> I am modifying the model like this:
>
> *Question model:*
> class Question(models.Model):
>
> quiz = models.ManyToManyField(Quiz, blank=True, )
>
> category = models.ForeignKey(Category, blank=True, null=True, )
>
> content = models.CharField(max_length=1000,
> blank=False,
> help_text="Enter the question text that you
> want displayed",
> verbose_name='Question',
> )
>
> explanation = models.TextField(max_length=2000,
> blank=True,
> help_text="Explanation to be shown
> after the question has been answered.",
> verbose_name='Explanation',
> )
>
>
> class Answer(models.Model):
> question = models.ForeignKey(Question)
>
> content = models.CharField(max_length=1000,
> blank=False,
> help_text="Enter the answer text that you
> want displayed",
> )
>
> correct = models.BooleanField(blank=False,
> default=False,
> help_text="Is this a correct answer?"
> )
> incorrect = models.BooleanField(blank = False, default =False,
> help_text = "is this incorrect ?")
>
> The original quiz model is here:
> https://github.com/tomwalker/django_quiz/blob/master/quiz/models.py
>
> How can I modify the view and models to achieve my functionality? Can you
> please atleast suggest an algorithm for the process?
>
--
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-users/7067f206-9d9d-429d-852d-66a91145b0e7%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.