Hello Malcolm, Thanks for your reply. In response to your questions:
> (a) what does "is_correct" contain when you think you should be entering the > "correct" branch? Is it really something that will evaluate to >True in > Python? In hindsight, "is_correct" was really not required and would not evaluate to "true" in .py . It probably sprung from your own Complex forms tutorial http://www.pointy-stick.com/blog/2008/01/06/django-tip-complex-forms/ Perhaps replacing that with "if a.correct:" would be better idea? > (b) What does q.next.get_absolute_url() return, if so? If, for example, > you were returning an empty string, things could behave strangely. What I am trying to is to: 1. Evaluate user's answer and 2. If answer is correct, redirect to next question else: 3. Redisplay current question I hope that this is sufficient response and not a waste of your time. Ken On Jan 20, 6:12 pm, Malcolm Tredinnick <malc...@pointy-stick.com> wrote: > On Tue, 2009-01-20 at 13:08 -0800, saved...@gmail.com wrote: > > i have a quiz app, 4 answers per question, one correct via boolean. > > For some reason I can't get the view to redirect to next question if > > answer is correct. Whenever I click on the correct answer the app > > doesn't redirect to the next question. Could anyone take a look at > > this and see what I'm doing wrong? > > > --models.py-- > > from django.db import models > > > class Question(models.Model): > > problem = models.CharField(max_length=200) > > next = models.ForeignKey('self', null=True, blank=True) > > > def __unicode__(self): > > return unicode(self.problem) > > > class Meta: > > verbose_name = 'question' > > verbose_name_plural = 'questions' > > > def get_absolute_url(self): > > return "/questions/%i/" % self.id > > > class Answer(models.Model): > > statement = models.CharField(max_length=200) > > question = models.ForeignKey(Question, related_name="answers") > > correct = models.BooleanField() > > > def __unicode__(self): > > return unicode(self.statement) > > --views.py-- > > > def answer(request, question_id): > > q = get_object_or_404(Question, pk=question_id) > > a = q.answers.get(pk=request.POST['answer']) > > is_correct = a.correct > > if is_correct: > > return HttpResponseRedirect(q.next.get_absolute_url()) > > else: > > return HttpResponseRedirect(q.get_absolute_url()) > > Given that one of the above two lines are always going to be executed > (either the "if" branch or the "else" branch), the code that follows is > pointless. It will never be run as one of the above two return > statements will return from the function. > > If you've edited your code to simplify things, you've removed some > relevant details. > > > return render_to_response('questions/question_detail.html', { > > 'q': q, > > 'a': a > > }, context_instance=RequestContext(request)) > > This is the bit that will never be run. > > The questions I would have when debugging this are: > > (a) what does "is_correct" contain when you think you should be entering > the "correct" branch? Is it really something that will evaluate to True > in Python? > > (b) What does q.next.get_absolute_url() return, if so? If, for example, > you were returning an empty string, things could behave strangely. > > A bit of debugging along those sorts of lines. Working out what you > expect to see in the variable contents and whether that matches reality, > would be a good start. Just drop in some print statements and see what > they say. > > Malcolm --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---