Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/04/2012, 07:32
berikin
 
Fecha de Ingreso: abril-2012
Mensajes: 2
Antigüedad: 12 años
Puntos: 0
Sonrisa Django uso formulario automatizado

Estoy haciendo un sitio de encuestas con Django.Soy bastante novato así que no tengo muy clara la dificultad de lo que quiero hacer. Mi intención es crear un formulario que muestre un número indeterminado de preguntas según la encuesta que es eilja, de tal forma que si por ejemplo la encuesta es de tipo general aparezcan 4 preguntas cuyas respuestas se guardarán en el modelo de respuestas y si es específica aparezcan 5 preguntas diferentes que también se guardarán en el modelo de respuestas. Tengo los siguientes modelos (también hay un modelo course pero no se utiliza para lo que quiero):

Código:
class SurveyType(models.Model):
    name = models.CharField(max_length=200)
    def __unicode__(self):
        return self.name

class Question(models.Model):
    ANSWERTYPE_CHOICES = (
        (u'T', u'Text'),
        (u'R', u'Range'),
        (u'M', u'Media'),
    )
    question = models.CharField(max_length=200)
    surveytype = models.ForeignKey(SurveyType)
    answertype = models.CharField(max_length=1, choices=ANSWERTYPE_CHOICES)
    order = models.IntegerField(default=0)
    def __unicode__(self):
        return self.question

class Survey(models.Model):
    course = models.ForeignKey(Course)
    surveytype = models.ForeignKey(SurveyType)
    def __unicode__(self):
        return u"%s %s" % (self.course, self.surveytype)

class Answer(models.Model):
    answer = models.CharField(max_length=400)
    survey = models.ForeignKey(Survey)
    question = models.ForeignKey(Question)
    def __unicode__(self):
        return self.answer

Al entrar en la página web django recibe el id de encuesta. Con el id de la encuesta se obtiene el surveytype y así sabemos que preguntas mostrar. Tengo esto en views.py:

Código:
from django.shortcuts import render_to_response, get_object_or_404
from surveys.models import Survey, Question, Answer

def survey(request, survey_id):
    survey_data = get_object_or_404(Survey, pk=survey_id)
    survey_type = survey_data.surveytype
    questions = Question.objects.all().filter(surveytype = survey_type).order_by('order')
Lo que quiero hacer es llamar a un formulario que se encuentre en forms.py y que genere las preguntas que tengo en la variable 'questions' y haga los campos de texto o radio en función del tipo de pregunta y después pueda guardar los resultados en answers. Esta es la parte que no se cómo hacer. Después de eso tendría que hacer un render_to_response al template de este tipo:

Código:
return render_to_response('surveys/make_survey.html', { 'form_questions': form_questions }, context_instance=RequestContext(request))
Espero haberme explicado correctamente, gracias por vuestra ayuda.