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))