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 django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
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.

Reply via email to