0

J'ai une simple application de questions et réponses dans Django 1.6 et j'ai de la difficulté à imprimer le question_id dans la console. La réponse soumise est très bien imprimée mais pas de chance d'obtenir le question_id. Il ne jette aucune erreurDjango n'imprime pas _id à la console

Voici ma models.py.

from django.db import models 
from django.contrib.auth.models import User 
# Create your models here. 

class Question(models.Model): 
    user = models.ForeignKey(User) 
    question = models.CharField(max_length=120) 
    timestamp = models.DateTimeField(auto_now_add=True, auto_now=False) 
    update = models.DateTimeField(auto_now_add=False, auto_now=True) 

    def __unicode__(self): 
     return self.question 

class Answer(models.Model): 
    question = models.ForeignKey(Question) 
    answer = models.CharField(max_length=120) 
    timestamp = models.DateTimeField(auto_now_add=True, auto_now=False) 
    update = models.DateTimeField(auto_now_add=False, auto_now=True) 

    def __unicode__(self): 
     return self.answer 

class UserAnswer(models.Model): 
    user = models.ForeignKey(User) 
    question = models.ForeignKey(Question) 
    answer = models.ForeignKey(Answer, null=True, blank=True) 
    timestamp = models.DateTimeField(auto_now_add=True, auto_now=False) 
    update = models.DateTimeField(auto_now_add=False, auto_now=True) 

    def __unicode__(self): 
     return self.answer.answer 

Voici mon views.py

from django.contrib import messages 
from django.contrib.auth.models import User 
from django.shortcuts import render_to_response, RequestContext, Http404, HttpResponseRedirect 

from .models import Question, Answer, UserAnswer 

def all_questions(request): 
    questions = Question.objects.all() 

    if request.method == 'POST': 
     print request.POST['question_id'] 
     print request.POST['answer'] 
    return render_to_response('questions/all.html', locals(), context_instance=RequestContext(request)) 

et voici mon modèle.

{% extends 'base.html' %} 

{% block content %} 
<div class='row'> 

    {% for question in questions %}  
     {{ question }}<br/> 
     <form method='POST' action=''>{% csrf_token %} 
     <input type='hidden' vlaue='{{ question.id }}' name='question_id'/> 
      {% for ans in question.answer_set.all %} 
      <input type='radio' value='{{ ans }}' name='answer'>{{ ans }} <br/> 
      {% endfor %} 
      <input type='submit' value='Submit'> 
     </form> 
    {% endfor %} 

</div> 

{% endblock %} 

Répondre

1

Votre problème est très probablement une faute de frappe:

{% extends 'base.html' %} 

{% block content %} 
<div class='row'> 

    {% for question in questions %}  
     {{ question }}<br/> 
     <form method='POST' action=''>{% csrf_token %} 
     <input type='hidden' **vlaue**='{{ question.id }}' name='question_id'/> 
      {% for ans in question.answer_set.all %} 
      <input type='radio' value='{{ ans }}' name='answer'>{{ ans }} <br/> 
      {% endfor %} 
      <input type='submit' value='Submit'> 
     </form> 
    {% endfor %} 

</div> 

{% endblock %} 

Il devrait être:

{% extends 'base.html' %} 

{% block content %} 
<div class='row'> 

    {% for question in questions %}  
     {{ question }}<br/> 
     <form method='POST' action=''>{% csrf_token %} 
     <input type='hidden' value='{{ question.id }}' name='question_id'/> 
      {% for ans in question.answer_set.all %} 
      <input type='radio' value='{{ ans }}' name='answer'>{{ ans }} <br/> 
      {% endfor %} 
      <input type='submit' value='Submit'> 
     </form> 
    {% endfor %} 

</div> 

{% endblock %} 
+1

chiffres. M'a fait coincé pendant des heures. Je préférerais que Django me jette 10 erreurs que de rester coincé sur une faute de frappe dans mon template! – Shaun

+1

Excellente idée .. Je commence ma liste de contrôle en ce moment. – Shaun

+0

@needaname: voir [Comment puis-je supprimer mon nom d'un message, conformément à CC: WIKI?] (Http://meta.stackexchange.com/q/96732) et [Comment puis-je supprimer mon compte?] (http://meta.stackexchange.com/q/5999). Vous avez concédé sous licence le contenu à Stack Exchange lorsque vous l'avez publié; Rage-tout à fait les suppressions sont généralement inversées. –

Questions connexes