Estoy haciendo un sistema para una empresa que, entre otras cosas, debe contener información sobre el nivel satisfactorio de varias cosas, lo he hecho funcionar bien usando un modelo fijo con preguntas y respuestas corregidas , pero estoy seguro de que tendrán que cambiar o agregar preguntas.Cómo hacer una encuesta de usuario personalizable en Django
Así que quiero hacer un sistema donde los usuarios puedan hacer esquemas de evaluación personalizados que consistan en preguntas personalizadas definidas por ellos. ¿Cómo hago para hacer un diseño así?
En este momento mi modelo es esto, pero equivocada:
RATING_CHOICES = ((0, u"Good"), (1, u"Bad"), (2, u"Dunno"),)
class EvaluationScheme(models.Model):
title = models.CharField(max_length=200)
class Evaluation(models.Model):
doctor = models.CharField(max_length=200)
agency = models.CharField(max_length=200)
scheme = models.ForeignKey(EvaluationScheme)
class EvaluationQuestion(models.Model):
question = models.CharField(max_length=200)
evaluation = models.ForeignKey(EvaluationScheme)
def __unicode__(self):
return self.question
class EvaluationAnswer(models.Model):
evaluation = models.ForeignKey(Evaluation)
question = models.ForeignKey(EvaluationQuestion)
answer = models.SmallIntegerField(choices=RATING_CHOICES)
Esta es una especie de lo que quiero, excepto que el EvaluationScheme es inútil, ya que todavía tiene que elegir todas las preguntas y respuestas sobre sí mismo - lo hace no muestra una lista de solo las preguntas relacionadas con el esquema de elección.
Gracias por su contribución, pero el problema es cuando agrega más de un EvaluationScheme, entonces puede responder todas las preguntas, no solo las relacionadas con el esquema creado. Al menos ese es el problema que tengo cuando uso la interfaz de administración. Pero tal vez necesito ir a hacer algunos AJAX en esos formularios. –
Si usa mi código aquí, no debería tener ese problema. La línea clave de mi código es "para preguntas en evaluation.scheme.evaluationquestion_set.all()", que solo recoge las preguntas relacionadas con el esquema de esta evaluación. Si su código no tiene una línea así, tendrá el problema que informa. – krubo