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:
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: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')
Código:
Espero haberme explicado correctamente, gracias por vuestra ayuda. return render_to_response('surveys/make_survey.html', { 'form_questions': form_questions }, context_instance=RequestContext(request))


