Voor een correct genormaliseerd relationeel databaseschema wilt u een duidelijke Choice
model met een externe sleutel op Question
:
class Question(models.Model):
question = models.CharField(...)
class Choice(models.Model):
question = models.ForeignKey("Question", related_name="choices")
choice = modelsCharField("Choice", max_length=50)
position = models.IntegerField("position")
class Meta:
unique_together = [
# no duplicated choice per question
("question", "choice"),
# no duplicated position per question
("question", "position")
]
ordering = ("position",)
En dan kun je bij een Question
. komen 's keuzes met myquestion.choices.all()
(en haal de vraag uit een Choice
met mychoice.question
).
Houd er rekening mee dat dit geen beperking oplegt aan het aantal keuzes voor een vraag, zelfs niet dat een vraag ten minste één gerelateerde keuze heeft.
Tenzij je een zeer dwingende reden hebt om het anders te doen, is een goed genormaliseerd schema wat je wilt als je een relationele database gebruikt (rdbms zijn veel meer dan alleen bitbuckets, ze bieden veel van handige functies - zolang je maar een goed schema hebt).