Foros del Web » Programando para Internet » Python »

Django uso formulario automatizado

Estas en el tema de Django uso formulario automatizado en el foro de Python en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 17/04/2012, 07:32
 
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.
  #2 (permalink)  
Antiguo 17/04/2012, 10:40
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Django uso formulario automatizado

Lee el capitulo sobre formularios del djago book.
  #3 (permalink)  
Antiguo 17/04/2012, 15:26
 
Fecha de Ingreso: abril-2012
Mensajes: 2
Antigüedad: 12 años
Puntos: 0
Respuesta: Django uso formulario automatizado

Hola, ya le he echado un vistazo al capítulo. También probé a realizar el ejemplo de la biblioteca [URL="https://docs.djangoproject.com/en/1.4/topics/forms/modelforms/"](este)[/URL] y probé a hacer algunos formularios para añadir preguntas y demás, pero no entiendo cómo hacer por ejemplo que según lo que ponga en answertype el formulario se cree con un texarea o un select, o que aparezca un número de campos a rellenar igual al número de preguntas. He probado de todo y no veo la manera...

Etiquetas: django, formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:20.