Ich mache ein System für ein Unternehmen, das unter anderem müssen Informationen über das zufrieden stellendes Niveau über verschiedene Dinge halten, ich habe es gut funktioniert ein festes Modell mit festen Fragen und Antworten mit aber ich bin mir sicher, dass sie Fragen ändern oder hinzufügen müssen.Wie eine anpassbare Benutzerumfrage in Django machen
Also möchte ich ein System erstellen, in dem Benutzer benutzerdefinierte Bewertungsschemas erstellen können, die aus benutzerdefinierten Fragen bestehen, die von ihnen definiert werden. Wie mache ich ein solches Design?
Im Moment ist mein Modell das, aber falsch:
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)
Dies ist eine Art, was ich will, mit der Ausnahme, dass die EvaluationScheme nutzlos ist, da man immer noch alle Fragen zu bieten hat und Antworten selbst - es tut Zeigen Sie keine Liste nur der Fragen an, die sich auf das Schema der Auswahl beziehen.
Vielen Dank für Ihren Beitrag - aber das Problem ist, wenn Sie mehr als ein EvaluationScheme hinzufügen - dann können Sie alle Fragen beantworten, nicht nur die Fragen im Zusammenhang mit dem erstellten Schema. Zumindest ist das das Problem, das ich bei der Verwendung der Verwaltungsschnittstelle habe. Aber vielleicht muss ich etwas AJAX auf diesen Formen machen. –
Wenn Sie meinen Code hier verwenden, sollten Sie dieses Problem nicht haben. Die Schlüsselzeile in meinem Code ist "for question in evaluation.scheme.evaluationquestion_set.all()", die nur diejenigen Fragen erfasst, die sich auf das Schema für diese Auswertung beziehen. Wenn Ihr Code keine solche Zeile hat, haben Sie das Problem, das Sie melden. – krubo